Question Qu'est-ce qui est demandé quand un alias est configuré dans Apache avec CNAME?


J'ai plusieurs sous-domaines définis sur ma machine de développement, comme suit.

  • test1.example.com => 192.168.0.7
  • test2.example.com => 192.168.0.7
  • ... (environ 30 domaines comme celui-ci)

J'ai plusieurs sites sur mon serveur de développement et Apache peut gérer ceux basés sur le nom de domaine.

Cependant, je me sens mal à propos de l'établissement de l'IP fixe. Donc, je veux utiliser des alias comme ceci:

  • default.example.com => 192.168.0.7
  • test1.example.com => (CNAME) default.example.com
  • test2.example.com => (CNAME) default.example.com

L'avantage ici est que lorsque l'adresse IP du serveur de développement est modifiée, je n'ai besoin d'en changer qu'une au lieu de plusieurs.

Si je demande test1.example.com du serveur Apache, faut-il le prendre comme test1.example.com ou default.example.com?


7
2018-06-02 00:39


origine


Assurez-vous de bien qualifier le CNAME en plaçant un dernier point (.) À la fin. default.mydomain.com. - Keith
Un problème, qui ne concerne parfois que très souvent, mais surtout dans le courrier électronique, est la recherche inversée (à partir de l'adresse IP) qui obtiendra le nom canonique. Donc, les noms avant et arrière ne correspondent pas. - Keith
@ Keith, la recherche inversée obtiendra quelle que soit l'entrée inversée. Les recherches inversées n'utilisent pas les entrées en avant pour déterminer le contenu à retourner. - Chris S
@ Chris, oui c'est vrai. Mais il est généralement défini sur le nom canonique. - Keith
@ Keith, pourquoi cela serait-il ?? Il est généralement défini sur ce que le maître d’hôte l’a défini. - Chris S


Réponses:


C’est généralement une bonne idée, car vous indiquez que vous ne devez modifier l’adresse IP qu’à un seul endroit.

Le client rechercherait test1, se ferait pointer par défaut, puis récupérerait l'adresse IP. Il se connecterait ensuite à Apache et indiquerait à Apache qu'il souhaitait le site test1 (il ne dit pas au serveur comment il a trouvé le serveur, mais quelle est la demande initiale).


10
2018-06-02 00:48





Vous avez identifié un avantage clé de l'enregistrement CNAME.

En ce qui concerne Apache, le champ Host de l'en-tête HTTP restera celui qui a été entré dans le client et le CNAME n'aura aucun effet.

Un inconvénient possible pour CNAME est que la recherche d'un enregistrement comportant une entrée CNAME nécessite deux requêtes, la première pour obtenir le CNAME et la seconde pour obtenir l'enregistrement A. Ce n'est probablement pas un gros problème mais mérite d'être mentionné.

Enfin, faites attention à "chaîner les CNAME", c'est-à-dire créer un CNAME pour un CNAME. Bien que cela soit permis par la RFC, cela est déconseillé.


3
2018-06-02 03:37



Regarder un CNAME ne le fait pas nécessairement besoin de deux requêtes. Si le serveur DNS prend en charge les requêtes récursives (la plupart le font), il résoudra la chaîne pour le compte du client. et si elle possède la totalité de la chaîne, la demande entière prendra environ le même temps que la recherche d'un enregistrement A. - Tom Shaw


Pour répondre à votre dernière question: Si vous utilisez NameVirtualHost directive dans Apache, et avoir un vhost configuré pour chaque entrée CNAMEed, vous obtiendrez des pages uniques telles que définies par cet vhost.

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName test1.example.com
    DocumentRoot /var/www/test1
</VirtualHost>

D'une manière générale D'après mon expérience, je vous conseillerais de ne pas dépendre de la configuration par défaut pour un contenu en direct, mais de configurer un vhost (avec serveraliases si nécessaire) pour chaque nom. Il y a toujours des exceptions, mais cela est généralement plus facile à déboguer car chaque nom que vous hébergez est comptabilisé en étant explicitement défini dans la configuration.


1
2018-06-02 12:33