39 votes

Pourquoi le fait de taper une adresse IP au lieu du nom de domaine correspondant n'affiche-t-il pas le site web ?

> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946

I type 93.184.216.34 au lieu de http://example.com dans Chrome. Il ne charge pas le site Web. Pourquoi ?

112voto

Jacob Points 1861

Parce que le bon HTTP Host L'en-tête est souvent nécessaire pour obtenir réellement le site visé.

Il est très courant d'héberger plusieurs sites web sur la même adresse IP et de les distinguer en fonction de l'adresse HTTP. Host spécifié par le client (ainsi que la valeur TLS SNI actuelle dans le cas de HTTPS).

C'est-à-dire que lorsque vous êtes entré http://example.com dans votre navigateur le Host L'en en-tête était example.com mais ce n'est pas le cas lorsque vous avez saisi 93.184.216.34 . Vous atteignez le même serveur web dans les deux cas, mais vous recevez des réponses différentes (dans ce cas précis, 200 contre 404).

14voto

En effet, les serveurs web utilisent généralement la technologie du "serveur virtuel" et sont capables de répondre à votre demande HTTP en utilisant exactement le nom de domaine que vous demandez, mais pas l'adresse IP des serveurs web. Grâce à la possibilité de cacher plus d'un nom de domaine sur une seule adresse IP.

Par exemple, le Apache Le serveur web est capable de répondre à votre requête HTTP avec une adresse IP en utilisant la section :

<VirtualHost *:80>
ServerName Default
...
</VirtualHost>

ou si aucun VirtualHost n'est utilisé dans la configuration.

La fonction VirtualHost d'Apache a été introduite en 1996.

10voto

Kerry Kobashi Points 219

Unter Apache En effet, vous pouvez héberger plusieurs sites web en utilisant une seule adresse IP. C'est ce qu'on appelle l'hébergement virtuel. C'est ainsi que l'on peut créer des sous-domaines, voire des domaines autonomes. Pour ce faire, il faut définir un fichier de configuration Apache contenant des directives VirtualHost pour chaque domaine/sous-domaine.

Un exemple de serveur HTTP possédant deux hôtes virtuels, exemple1.com et exemple2.com, peut ressembler à ceci (définition de l'adresse IP) :

<VirtualHost 93.184.216.34:80>
  ServerName example1.com
  ServerAlias www.example1.com
  DocumentRoot /var/www/example1.com
</VirtualHost>

<VirtualHost 93.184.216.34:80>
  ServerName example2.com
  ServerAlias www.example2.com
  DocumentRoot /var/www/example2.com
</VirtualHost>

Il peut également ressembler à ceci (définition basée sur le nom) :

<VirtualHost *:80>
  ServerName example1.com
  ServerAlias www.example1.com
  DocumentRoot /var/www/example1.com
</VirtualHost>

<VirtualHost *:80>
  ServerName example2.com
  ServerAlias www.example2.com
  DocumentRoot /var/www/example2.com
</VirtualHost>

Dans les deux cas, deux enregistrements d'hôtes virtuels sont créés en interne dans la mémoire et utilisés par Apache pour être comparés lorsqu'une requête URI arrive.

Lorsqu'un utilisateur saisit l'adresse IP via un agent utilisateur, le premier hôte virtuel répertorié dans le fichier de configuration est utilisé comme domaine primaire (c'est-à-dire, dans ce cas, exemple1.com).

Lorsqu'un utilisateur tape un nom de domaine, la demande est envoyée à un réseau public Internet DNS (ICANN) qui fournit l'adresse IP associée à ce nom. Vous avez enregistré les deux via un bureau d'enregistrement ICANN (comme GoDaddy). Ces deux éléments doivent être corrects et il faut laisser passer un certain temps avant que la propagation ne s'effectue vers tous les serveurs DNS du réseau ICANN. De nos jours, cela peut prendre jusqu'à 24 heures.

Lorsque la demande est acheminée vers votre serveur HTTP Apache, l'adresse IP et le nom de domaine sont comparés à la liste des enregistrements internes de VirtualHost. S'ils sont trouvés, la racine du document est utilisée pour former le chemin complet du système de fichiers vers la ressource objet à renvoyer à l'agent utilisateur. Dans le cas contraire, un message HTTP 404 est envoyé avec tout document d'erreur associé.

8voto

Chris Lomax Points 173

J'aime utiliser la terminologie "maison".

Vous pouvez très facilement envoyer une lettre à une maison sans nom dessus et elle arrivera à la maison.

Si vous mettez le nom de la personne, vous envoyez à son destinataire.

La destination est la même, mais la façon dont elle est traitée lorsqu'elle arrive à la maison est différente.

Lorsque vous spécifiez le site, c'est-à-dire www.example.com, le serveur sait comment traiter la demande, à quel hôte elle est destinée et quel site il doit renvoyer.

0voto

Peter Green Points 3844

Le terme clé à rechercher est "hébergement virtuel basé sur le nom".

Les gens veulent attribuer plusieurs noms d'hôtes au même serveur web et servir un contenu différent pour chaque nom d'hôte. C'est ce qu'on appelle l'hébergement virtuel (à ne pas confondre avec le concept plus récent des machines virtuelles).

Au départ, l'hébergement virtuel consistait à attribuer plusieurs adresses IP au serveur, le serveur pouvant alors envoyer un contenu différent en fonction de l'adresse IP utilisée, mais cela a été considéré comme un gaspillage.

C'est pourquoi l'en-tête "host" a été introduit, d'abord comme une extension, puis comme une partie obligatoire de la spécification http 1.1 en 1997. Cet en-tête spécifie le nom d'hôte demandé par le client. Le serveur peut alors servir un contenu différent en fonction de la valeur de l'en-tête.

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