98 votes

Comment configurer les DNS pour un domaine apex (sans www) pointant vers une application Heroku ?

J'ai déjà ajouté un domaine personnalisé à mon application Heroku et cela fonctionne avec www.domain.com .

J'ai besoin de savoir comment configurer le domaine sans www pour se résoudre à l'application, aussi.

Voici mes paramètres DNS actuels :

$TTL 86400
@   IN SOA ns1.first-ns.de. postmaster.robot.first-ns.de. (
    2013041500   ; serial
    14400        ; refresh
    1800         ; retry
    604800       ; expire
    86400 )      ; minimum

@                        IN NS      robotns3.second-ns.com.
@                        IN NS      robotns2.second-ns.de.
@                        IN NS      ns1.first-ns.de.

@                        IN A       88.198.38.XXX
localhost                IN A       127.0.0.1
mail                     IN A       88.198.38.XXX
ftp                      IN CNAME   www
imap                     IN CNAME   www
loopback                 IN CNAME   localhost
pop                      IN CNAME   www
relay                    IN CNAME   www
smtp                     IN CNAME   www
www                      IN CNAME   appname.herokuapp.com.
@                        IN MX 10   mail

Quels sont les paramètres corrects à utiliser pour que les deux example.com y www.example.com pointerait correctement vers mon application Heroku ?

0 votes

Il semblerait que vos paramètres ftp/pop/smtp soient erronés, puisqu'ils pointent vers www, qui pointe vers heroku, qui ne fait pas de ftp/pop/smtp.

0 votes

150voto

kch Points 25855

(Remarque : les domaines racine, base, apex sont tous la même chose. Utilisé de manière interchangeable pour google-foo).

Traditionnellement, pour faire pointer votre domaine apex, vous utilisez un enregistrement A pointant vers l'IP de votre serveur. Cette solution n'est pas évolutive et n'est pas viable pour une plateforme en nuage comme Heroku, où des backends multiples et changeant fréquemment sont responsables de la réponse aux demandes.

Pour les sous-domaines (comme www.example.com ), vous pouvez utiliser des enregistrements CNAME pointant vers your-app-name.herokuapp.com . A partir de là, Heroku gère les enregistrements dynamiques A derrière your-app-name.herokuapp.com afin qu'ils soient toujours à jour. Malheureusement, la spécification DNS n'autorise pas les enregistrements CNAME sur l'apex de la zone (le domaine de base). (Par exemple, les enregistrements MX seraient cassés car le CNAME serait suivi jusqu'à sa cible en premier).

Pour en revenir aux domaines racine, la solution simple et générique consiste à ne pas les utiliser du tout. Comme mesure de repli, certains fournisseurs de DNS proposent de configurer une redirection HTTP pour vous. Dans ce cas, configurez-la de manière à ce que example.com est une redirection HTTP vers www.example.com .

Certains fournisseurs de DNS ont proposé des solutions personnalisées qui permettent un comportement similaire à celui des CNAME au sommet de la zone. A ma connaissance, nous avons L'enregistrement ALIAS de DNSimple y L'enregistrement ANAME de DNS Made Easy ; les deux se comportent de manière similaire.

En utilisant ceux-ci, vous pouvez configurer vos enregistrements comme (en utilisant la notation zonefile, même si vous le ferez probablement sur leur interface utilisateur web) :

@   IN ALIAS your-app-name.herokuapp.com.
www IN CNAME your-app-name.herokuapp.com.

Souvenez-vous de @ est un raccourci pour le domaine racine ( example.com ). N'oubliez pas non plus que les points de fin de ligne sont importants, tant dans les fichiers de zone que dans certaines interfaces utilisateur Web.

Voir aussi :

Remarques :

  • Route 53 d'Amazon dispose également d'un type d'enregistrement ALIAS, mais il est quelque peu limité, dans la mesure où il ne fonctionne qu'au sein d'AWS. Pour l'instant, je ne recommande pas d'utiliser cette méthode pour une installation Heroku.

  • Certaines personnes confondent les fournisseurs de DNS et les bureaux d'enregistrement de noms de domaine, car il y a un certain chevauchement entre les sociétés qui proposent les deux. Sachez que pour transférer votre DNS vers l'un des fournisseurs susmentionnés, il vous suffit de mettre à jour les enregistrements de votre serveur de noms auprès de votre bureau d'enregistrement actuel. Vous n'avez pas besoin de transférer votre enregistrement de domaine.

1 votes

3 votes

+1 pour avoir mentionné dnsimple. Leurs efforts pour faciliter la collaboration avec les fournisseurs de services en nuage ont été un facteur important dans ma décision de les adopter.

1 votes

@kch connaissez-vous un moyen de créer un type d'enregistrement DNS qui se comporte comme l'ALIAS de DNSimple dans BIND ?

5voto

Jeff Bowen Points 1306

Pour faire pointer votre domaine apex/Root/naked vers une application hébergée par Heroku, vous devez utiliser un fournisseur DNS qui prend en charge les enregistrements de type CNAME (souvent appelés enregistrements ALIAS ou ANAME). Actuellement, Heroku recommande :

Quel que soit votre choix, votre dossier ressemblera à ce qui suit :

Record : ALIAS o ANAME

Nom : vide ou @

Cible : example.com.herokudns.com.

C'est tout ce dont vous avez besoin.


Cependant, c'est pas bon pour le référencement pour que la version www et la version non-www soient toutes deux résolues. L'une doit pointer vers l'autre en tant qu'URL canonique. La façon dont vous décidez de procéder dépend de l'utilisation ou non de HTTPS. Et si ce n'est pas le cas, vous devriez probablement le faire, car Heroku est désormais en mesure d'utiliser HTTPS. gère les certificats SSL pour vous automatiquement et gratuitement pour toutes les applications fonctionnant sur des bancs d'essai payants.

Si vous n'utilisez pas le protocole HTTPS, vous pouvez simplement créer un enregistrement de redirection 301 auprès de la plupart des fournisseurs de services DNS en faisant pointer le nom de l'entreprise. www a http://example.com .

Si vous sont en utilisant HTTPS, vous devrez très probablement gérer la redirection au niveau de l'application. Si vous voulez savoir pourquoi, consultez les documents suivants court y long des explications mais, en gros, puisque votre fournisseur de DNS ou autre service de transfert d'URL n'a pas, et ne devrait pas avoir, votre certificat SSL et votre clé privée, il ne peut pas répondre aux demandes HTTPS pour votre domaine.

Pour gérer les redirections au niveau de l'application, vous devrez :

  • Ajoutez vos noms d'hôtes apex et www à l'application Heroku ( heroku domains:add example.com y heroku domains:add www.example.com )
  • Configurez vos certificats SSL
  • Faites pointer votre enregistrement de domaine apex vers Heroku en utilisant un enregistrement ALIAS ou ANAME comme décrit ci-dessus.
  • Ajouter un enregistrement CNAME avec le nom www pointant vers www.example.com.herokudns.com.
  • Puis, dans votre application, redirigez toutes les requêtes www vers l'URL non-www ( voici un exemple de comment le faire dans Django)
  • Toujours dans votre application, vous devriez probablement rediriger toutes les demandes HTTP vers HTTPS (par exemple, dans Django set SECURE_SSL_REDIRECT a True )

Vérifiez ce poste de DNSimple pour en savoir plus.

4voto

catsby Points 6133

Voir la réponse de @kch

Pour ce faire, vous devez utiliser un A record et le point blah.com à l'une des adresses IP de Heroku, cependant, il est fortement recommandé de ne pas le faire :

~~

L'utilisation de domaines nus a des répercussions importantes sur le temps de fonctionnement de votre application et sur la capacité d'un fournisseur d'infrastructure à réagir à des conditions défavorables en votre nom.

Si vous voulez vraiment un domaine apex, il est recommandé d'utiliser quelque chose comme l'enregistrement d'alias de DNSimple :

~~

3voto

Leo Points 21

J'utilise maintenant Google Apps (pour la messagerie) et Heroku comme serveur web. J'utilise la fonction de redirection permanente 301 de Google Apps pour rediriger le domaine nu vers WWW.votre_domaine.com.

Vous pouvez trouver les instructions étape par étape ici https://stackoverflow.com/a/20115583/1440255

2voto

krisku Points 1942

Vous n'êtes pas autorisé à avoir un enregistrement CNAME pour le domaine, car le CNAME est une fonction d'alias qui couvre tous les types de données (indépendamment du fait que le client recherche des enregistrements MX, NS ou SOA). De plus, les CNAME font toujours référence à un nouveau nom, et non à une adresse IP. deux erreurs dans la ligne unique

@                        IN CNAME   88.198.38.XXX

En remplaçant ce CNAME par un enregistrement A, cela devrait fonctionner, à condition que l'adresse IP utilisée soit la bonne pour votre application Heroku.

La seule façon correcte dans le DNS de faire un simple domain.com pour que le nom fonctionne dans le navigateur, il faut faire pointer le domaine vers une adresse IP avec un enregistrement A.

0 votes

Ok mais comment connaître mon IP ? Via host appname.herokuapp.com/www.domain.com j'obtiens juste une IP comme ça : 107.20.162.205 (Pas d'application Heroku de ce type)

1 votes

Cette IP est celle qu'il faut utiliser. Vous ne pouvez pas tester dans le navigateur avec une adresse IP, car Heroku a besoin de connaître le nom de l'application que vous essayez d'utiliser. Configurez simplement l'enregistrement A dans le DNS et testez avec than, et Heroku verra le nom que vous utilisez et tout devrait bien se passer !

0 votes

Ok mais je reçois à chaque fois une autre IP après "host appname.herokuapp.com".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X