C'est la partie suivante d'une configuration d'hôte virtuel sur laquelle j'ai besoin de précisions:
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin [email protected]
ServerName 141.29.495.999
ServerAlias example.com
...
Ceci est 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 aux adresses IP sur lesquelles ce serveur peut être contacté. Par exemple, si le serveur est accessible sur plusieurs adresses IP, vous pouvez limiter cette directive à une seule au lieu des deux.
ServerName
- Si la partie hôte de la demande HTTP correspond à ce nom, autorisez la demande. Normalement, ce serait un nom de domaine mappé à une IP, mais dans ce cas, l'hôte de requête HTTP doit correspondre à cette IP.
ServerAlias
- Noms alternatifs acceptés par le serveur.
La partie déroutante pour moi est, dans le scénario ci-dessus, si je mets ServerAlias mytestname.com
puis a fait une demande HTTP à mytestname.com
, il devrait y avoir un enregistrement DNS pointant vers l'IP du serveur pour que cela fonctionne? Dans ce cas, ServerAlias est-il essentiellement des entrées EXTRA ServerName?
Supposons que j'avais une entrée DNS telle que foobar.com = 141.29.495.999
mais alors j'avais ServerName = 141.29.495.999
et ServerAlias
étaient vides, cela signifierait-il que bien que foobar.com soit résolu sur la bonne IP, car il n'y a aucune référence pour accepter foobar.com dans ServerName
ou ServerAlias
?
Ou quelque chose. Mec je suis confus.
Pensez-y comme ceci:
DNS est l'annuaire téléphonique/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. DNS fait la même chose mais pour les ordinateurs - quand quelqu'un veut aller à www.example.com
ils demandent l'adresse DNS à DNS, puis ils peuvent contacter l'ordinateur qui a cette adresse IP. C'est ce que signifie résoudre. La résolution d'une adresse IP n'a rien à voir avec Apache; c'est strictement une question DNS.
ServerName
et ServerAlias
ressemble plus à la liste téléphonique interne d'une entreprise. Votre serveur Web est le standard téléphonique; il acceptera toutes les connexions entrantes au serveur. Ensuite, le client/l'appelant leur dira quel nom ils recherchent, et il cherchera dans la configuration Apache comment gérer ce nom.
Si le nom n'est pas répertorié en tant que ServerName/ServerAlias dans la configuration Apache, Apache leur donnera toujours le premier VirtualHost répertorié. Ou, s'il n'y a pas du tout VirtualHost, il donnera le même contenu, quel que soit le nom d'hôte indiqué dans la demande.
http://www.example.com
dans votre navigateur.www.example.com
.www.example.com
(c'est le Host:
header dans HTTP).www.example.com
. L'un des événements suivants peut se produire: www.example.com
est répertorié en tant que ServerName
ou ServerAlias
pour un VirtualHost
- si c'est le cas, il utilisera la configuration de ce VirtualHost pour fournir le contenu.www.example.com
n'est répertorié dans aucun d'entre eux - si c'est le cas, le premier Virtualhost de la liste sera utilisé pour fournir le contenu.Si vous ne définissez pas ServerName, Apache2 essaiera de le deviner à partir de/etc/hosts. ServerAlias est facultatif. Le cas d'utilisation le plus courant est celui où
ServerName example.com
ServerAlias www.example.com
C'est à vous (pas au travail d'Apache2) de vous assurer que les requêtes atteignent l'IP du serveur Web, par exemple, l'enregistrement d'un domaine et la configuration des enregistrements DNS. Une façon très courante de le faire (pour le test et le développement) sans enregistrements de domaine et DNS est de définir votre fichier machine locale/etc/hosts de sorte que example.com pointe vers l'IP de votre serveur.
192.168.0.12 example.com
192.168.0.12 www.example.com
Je suggère fortement 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 d'hôtes virtuels contenant l'adresse IP et la combinaison de ports correspondantes les plus spécifiques, alors le premier hôte virtuel répertorié qui correspond qui sera utilisé. ". Donc, dans votre cas, si vous accédez à "foobar.com", la première entrée VirtualHost qui correspond en quelque sorte à l'IP 141.29.495.999 serait utilisée par httpd
Le même document indique que "de nombreux serveurs souhaitent être accessibles par plusieurs noms. C'est possible avec la directive ServerAlias". Vous pouvez donc considérer ServerAlias simplement comme des entrées ServerName supplémentaires.