C'est la partie suivante d'une configuration d'hôte virtuel sur laquelle j'ai besoin de clarifications supplémentaires:
<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 avec les adresses IP sur lesquelles ce serveur peut être contacté. Par exemple, si vous pouviez accéder au serveur sur plusieurs adresses IP, vous pouvez limiter cette directive à une seule au lieu des deux.
ServerName
- Si la partie hôte de la requête HTTP correspond à ce nom, autorisez la requête. Normalement, il s’agit d’un nom de domaine mappé sur une adresse IP, mais dans ce cas, l’hôte de la requête HTTP doit correspondre à cette adresse IP.
ServerAlias
- Noms alternatifs acceptés par le serveur.
La partie déroutante pour moi est que, dans le scénario ci-dessus, si je définissais ServerAlias mytestname.com
puis adressais une requête HTTP à mytestname.com
, il faudrait un enregistrement DNS pointant vers l'adresse IP du serveur pour que cela fonctionne? Dans quel cas, ServerAlias est-il simplement des entrées EXTRA ServerName?
Disons que j’avais une entrée DNS telle que, foobar.com = 141.29.495.999
mais que j’étais vide ServerName = 141.29.495.999
et que j’étais ServerAlias
vide, cela voudrait-il dire que bien que foobar.com soit résolu à la bonne adresse IP, car il n’existe aucune référence permettant d’accepter foobar.com dans ServerName
ou ServerAlias
?
Ou quelque chose. Homme je suis confus.
Réponses:
Pensez-y comme ceci:
DNS est l'annuaire téléphonique / les pages jaunes. Lorsqu'une personne souhaite appeler votre téléphone, elle 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 y aller,
www.example.com
il demande l'adresse IP au DNS puis il peut contacter l'ordinateur qui a cette adresse IP. C'est ce que veut dire résoudre . La résolution d'une adresse IP n'a rien à voir avec Apache; c'est strictement une question de DNS.Le
ServerName
etServerAlias
ressemble plus à une liste de téléphone 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 la configuration d'Apache leur indiquera comment gérer 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 hôte virtuel 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 requête.
ETA: Donc, pas à pas pour une connexion normale:
http://www.example.com
dans votre navigateur.www.example.com
.www.example.com
(c'est l'en-Host:
tête dans HTTP).www.example.com
. L'une des situations suivantes peut se produire:www.example.com
est répertorié en tant queServerName
ouServerAlias
pour unVirtualHost
- si tel est le cas, il utilisera la configuration de ce VirtualHost pour fournir le contenu.www.example.com
hôtes virtuels, mais ne figure dans aucune d’entre eux. Si tel est le cas, le premier hôte virtuel de la liste sera utilisé pour transmettre le contenu.la source
www.example.com
, le DNS résoudra l'adresse IP de ce nom et la partie hôte de la requête HTTP sera en réalité une adresse IP; En atteignant le serveur, Apache saura également que la demande demandéewww.example.com
et s'il existe une directiveServerName
ouServerAlias
pour ce nom de domaine, il peut servir la racine du document?The server has VirtualHosts but www.example.com isn't listed in any of them - if so, the first Virtualhost in the list will be used to deliver the content.
. J'ai testé cela. C'est vrai mais je ne suis pas sûr que ce soit d'abord Virtualhost. Merci pour l'information. +1Si vous ne définissez pas ServerName, apache2 tentera de le deviner à partir de / etc / hosts. ServerAlias est facultatif. Le cas d'utilisation le plus habituel est où
C’est à vous (et non 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 d’enregistrements DNS. Un moyen très courant de le faire (pour les tests et le développement) sans enregistrements de domaine et dns consiste à définir le fichier / etc / hosts de votre machine locale de sorte que example.com pointe sur l’adresse IP de votre serveur.
la source
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 aucune ServerName correspondant ou ServerAlias se trouve dans l'ensemble des hôtes virtuels contenant l'adresse IP correspondante la plus spécifique et la combinaison port, puis le premier répertorié hôte virtuel correspondant 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 sera utilisée par httpd
Le même document indique "De nombreux serveurs veulent être accessibles sous plusieurs noms. Cela est possible avec la directive ServerAlias". Vous pouvez donc considérer ServerAlias simplement comme des entrées ServerName supplémentaires.
la source