103 votes

Comment fonctionne ServerName et ServerAlias ?

C'est sur la partie suivante de la configuration d'un hôte virtuel que j'ai besoin de précisions :

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin example@example.com
  ServerName  141.29.495.999
  ServerAlias example.com
...

Voici un exemple de configuration, similaire à ce que j'ai actuellement (je n'ai pas de nom de domaine pour le moment).

<VirtualHost *:80> - Autorisez les paramètres suivants pour toutes les requêtes HTTP effectuées sur le port 80 vers les IP sur lesquelles ce serveur peut être contacté. Par exemple, si le serveur est accessible sur plusieurs IP, vous pouvez restreindre cette directive à l'une d'entre elles au lieu des deux.

ServerName - Si la partie "hôte" de la requête HTTP correspond à ce nom, la requête est autorisée. Normalement, il s'agit d'un nom de domaine qui correspond à une IP, mais dans ce cas, l'hôte de la requête HTTP doit correspondre à cette IP.

ServerAlias - Noms alternatifs acceptés par le serveur.

Ce qui est déroutant pour moi, c'est que dans le scénario ci-dessus, si je mets ServerAlias mytestname.com et a ensuite fait une demande HTTP à mytestname.com Pour que cela fonctionne, il faudrait qu'il y ait un enregistrement DNS pointant vers l'IP du serveur ? Dans ce cas, ServerAlias n'est qu'une entrée EXTRA ServerName ?

Disons que j'ai une entrée DNS telle que foobar.com = 141.29.495.999 mais ensuite j'ai eu ServerName = 141.29.495.999 y ServerAlias était vide, cela signifierait-il que, bien que foobar.com soit résolu vers la bonne IP, parce qu'il n'y a pas de référence pour accepter foobar.com dans le fichier ServerName ou ServerAlias ?

Ou quelque chose comme ça. Mec, je suis confus.

140voto

Jenny D Points 26978

Pensez-y comme ça :

DNS est l'annuaire téléphonique/les pages jaunes. Lorsque quelqu'un veut appeler votre téléphone, il peut rechercher votre nom, obtenir votre numéro de téléphone et appeler ce téléphone. Le DNS fait la même chose mais pour les ordinateurs - quand quelqu'un veut aller à www.example.com ils demandent au DNS l'adresse IP, puis ils peuvent contacter l'ordinateur qui a cette adresse IP. C'est ce que résoudre moyens. La résolution d'une adresse IP n'a absolument rien à voir avec Apache ; c'est strictement une question de DNS.

El ServerName y ServerAlias ressemble plus à la liste de téléphone interne d'une entreprise. Votre serveur web est le standard téléphonique ; il accepte toutes les connexions entrantes vers le serveur. Ensuite, le client/appelant lui indiquera le nom qu'il recherche, et il cherchera dans la configuration d'Apache comment traiter ce nom.

Si le nom n'est pas répertorié en tant que ServerName/ServerAlias dans la configuration d'apache, apache leur donnera toujours le premier VirtualHost répertorié. Ou, s'il n'y a pas de VirtualHost du tout, il donnera le même contenu, quel que soit le nom d'hôte indiqué dans la requête.

ETA : Donc, étape par étape pour une connexion normale :

  1. Vous tapez http://www.example.com dans votre navigateur.
  2. Votre ordinateur demande à son résolveur DNS l'adresse IP qu'il doit utiliser pour communiquer avec les services suivants www.example.com .
  3. Votre ordinateur se connecte à cette adresse IP, et dit qu'il veut parler à www.example.com (c'est le Host: dans le protocole HTTP).
  4. Le serveur Web consulte sa configuration pour déterminer ce qu'il doit faire avec une demande de contenu émanant de l'une des sources suivantes www.example.com . L'une des situations suivantes peut se produire :
    • www.example.com est répertorié comme un ServerName ou ServerAlias pour un VirtualHost - Si c'est le cas, il utilisera la configuration de ce VirtualHost pour diffuser le contenu.
    • Le serveur ne dispose d'aucun VirtualHosts. Si c'est le cas, il utilisera la configuration de son httpd.conf pour diffuser le contenu.
    • Le serveur a des VirtualHosts mais www.example.com n'est pas répertorié dans l'une d'entre elles - si c'est le cas, le premier Virtualhost de la liste sera utilisé pour diffuser le contenu.

26voto

blau Points 708

Si vous ne définissez pas ServerName, apache2 essaiera de le deviner à partir de /etc/hosts. ServerAlias est facultatif. Le cas le plus courant est celui où

ServerName example.com
ServerAlias www.example.com

C'est à vous (et non à apache2) de vous assurer que les requêtes atteignent l'IP du serveur web, par exemple en enregistrant un domaine et en configurant des enregistrements DNS. Une façon très courante de le faire (pour les tests et le développement) sans enregistrement de domaine et de DNS est de configurer le fichier /etc/hosts de votre machine locale de sorte que exemple.com pointe vers l'IP de votre serveur.

192.168.0.12 example.com
192.168.0.12 www.example.com

5voto

<VirtualHost *:80>
    ServerName influenceknowledge.test
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/work-force/public
    ServerAlias influenceknowledge.test *.influenceknowledge.test
    <Directory /var/www/html/influence-knowledge/public >
       AllowOverride All
           Require all granted
    </Directory>    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

2voto

mtoninelli Points 133

Je vous conseille vivement de lire la documentation officielle sur le sujet : https://httpd.apache.org/docs/2.4/vhosts/name-based.html

il dit "Si aucun ServerName ou ServerAlias correspondant n'est trouvé dans l'ensemble des hôtes virtuels contenant la combinaison d'adresse IP et de port la plus spécifique, le premier hôte virtuel listé qui correspond sera utilisé." . Ainsi, dans votre cas, si vous accédez à "foobar.com", la première entrée VirtualHost qui correspond d'une manière ou d'une autre à l'IP 141.29.495.999 sera utilisée par httpd.

Le même document indique que "de nombreux serveurs veulent être accessibles par plus d'un nom. Cela est possible grâce à la directive ServerAlias". Vous pouvez donc considérer ServerAlias simplement comme des entrées ServerName supplémentaires.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X