> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
Je tape 93.184.216.34
au lieu de http://example.com
dans Chrome. Cela ne charge pas le site. Pourquoi?
> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
Je tape 93.184.216.34
au lieu de http://example.com
dans Chrome. Cela ne charge pas le site. Pourquoi?
Réponses:
Parce que le bon en- Host
tête HTTP est souvent nécessaire pour obtenir le site prévu.
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'en- Host
tête HTTP spécifié par le client (ainsi que de la valeur TLS SNI de nos jours dans le cas du protocole HTTPS).
C'est-à-dire que lorsque vous avez entré http://example.com
votre navigateur, l'en- Host
tête était example.com
, mais ce n'est pas le cas lorsque vous l'avez entré 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 particulier, 200 contre 404).
Host
et quels serveurs web l'utilisent généralement? C'est un peu difficile de chercher en ligne parce que ce mot est tellement surchargé.
curl -H "Host: example.com" http://93.184.216.34/
ou quelque chose comme ça.
example.com example.net example.org example.edu
la même adresse (s), raison pour laquelle il a vraiment besoin du nom dans l'en-tête Host.
Parce que les serveurs Web utilisent généralement la technologie de "serveur virtuel" et sont capables de répondre à votre demande HTTP avec exactement le nom de domaine que vous demandez, mais pas l'adresse IP des serveurs Web. Merci de cacher plus d’un nom de domaine sur une adresse IP.
Par exemple, le serveur Web Apache est en mesure de répondre à votre requête HTTP avec une adresse IP en utilisant la section:
<VirtualHost *:80>
ServerName Default
...
</VirtualHost>
ou si aucun hôte virtuel utilisé dans la configuration.
La fonctionnalité VirtualHost dans Apache a été introduite en 1996.
Dans Apache , vous pouvez héberger de nombreux sites Web en utilisant une seule adresse IP. Ceci s'appelle l'hébergement virtuel. C'est comment les sous-domaines peuvent être créés, même les domaines autonomes. Cela se fait en configurant un fichier de configuration Apache contenant les directives VirtualHost pour chaque domaine / sous-domaine.
Un exemple de serveur HTTP comportant 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>
Cela peut aussi 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ôte virtuel sont créés en interne dans la mémoire et utilisés par Apache pour la comparaison lorsqu’une demande URI est reçue.
Lorsqu'un utilisateur tape l'adresse IP via un agent d'utilisateur, le premier hôte virtuel répertorié dans le fichier de configuration est utilisé comme domaine principal (c'est-à-dire, dans l'exemple, 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 qui lui est associée. Vous avez enregistré les deux via un bureau d'enregistrement ICANN (comme GoDaddy). Vous devez avoir les deux corrects et donner un peu de temps avant que la propagation ne s'empare de tous les serveurs DNS du réseau ICANN. Ces jours, cela peut prendre jusqu'à 24 heures.
Lorsque la demande est routée vers votre serveur HTTP Apache, l'adresse IP et le nom de domaine sont comparés à la liste des enregistrements internes de VirtualHost. Lorsqu'il en trouve un, la racine du document est utilisée pour former le chemin d'accès complet du système de fichiers à la ressource objet, afin de le renvoyer à l'agent utilisateur. Dans le cas contraire, un HTTP 404 est envoyé avec tout document d'erreur associé.
J'aime utiliser la terminologie "maison".
Vous pouvez très facilement envoyer une lettre à une maison sans nom et elle arrivera à la maison.
Si vous mettez le nom de la personne dessus, vous l'enverrez au destinataire.
La destination est la même, mais la façon dont elle est gérée lorsqu'elle atteint la maison est différente.
Lorsque vous spécifiez le site, c'est-à-dire www.example.com, le serveur sait comment traiter la demande, son hôte et le site à desservir.
Le terme clé à rechercher est "hébergement virtuel basé sur le nom".
Les utilisateurs souhaitent attribuer plusieurs noms d’hôte au même serveur Web et diffuser 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 de machines virtuelles).
Initialement, l'hébergement virtuel était réalisé en attribuant plusieurs adresses IP au serveur. Le serveur pouvait alors envoyer un contenu différent en fonction de l'adresse IP utilisée, mais cela était considéré comme une perte de temps.
Par conséquent, l'en-tête "host" a été introduit, initialement en tant qu'extension, puis a ensuite été rendu obligatoire en 1997 par la spécification http 1.1. Cet en-tête spécifie le nom d'hôte demandé par le client. Le serveur peut alors diffuser un contenu différent en fonction de la valeur de l'en-tête.
Pour réduire les coûts des serveurs Web, de nombreux serveurs Web hébergent plusieurs sites Web. Ils le font en utilisant des hôtes virtuels, ou Vhosts, dans apache2 / nginx / etc. Ainsi, si vous accédez directement à l'adresse IP du site Web, vous obtiendrez probablement un écran "Apache fonctionne", voire éventuellement une redirection vers le site Web principal du serveur Web.
Un Vhost examine l'adresse du site Web entrant et la compare aux noms ServerName ou ServerAlias dans les fichiers Vhosts activés. Si l'un d'eux correspond, ce site Web spécifique est chargé.
Si le site Web ne supporte pas une charge considérable (nombre élevé de visiteurs uniques / pages vues) ou ne génère pas d'applications très chargées (pensez à youtube.com, Facebook, etc.), il est probablement plus rentable de fonctionner sur un serveur partagé. Ce serait un gaspillage d'argent de vous procurer un serveur dédié (à partir de 60 $ / mois) juste pour gérer un site Web de blog Wordpress. Vous feriez mieux d'avoir une plate-forme partagée sur un serveur avec probablement plus de 200 sites Web sur un serveur. Les coûts seront plus de l'ordre de 5 $ / mois.
Une autre raison est l'absence d'adresses IP. Il n’ya tout simplement pas assez d’adresses IPv4 restantes. Ce n’est que par l’utilisation du NAT pour les réseaux privés / professionnels et l’utilisation de Vhosts. Même lorsque IPv6 devient le flux principal, les serveurs resteront probablement sur Vhosts (coûts de serveur).
Une adresse IP dédiée coûte cher, tandis que la création d'un nouveau site Web sur un serveur est fondamentalement gratuite.
En fait, la société d'hébergement loue une adresse IP unique qui pointe vers un serveur physique, puis héberge des milliers de sites Web sur cette adresse IP à l'aide de la fonction "hôte virtuel".
Pensez comme une boîte postale. Si vous écrivez simplement l'adresse du bureau de poste mais sans le numéro de boîte postale, le courrier ne sera pas livré.
Il y a beaucoup de réponses ici avec les détails techniques, mais je pense que la simple explication de haut niveau est que même si un serveur Web est correctement écoute pour trafic http sur l' adresse IP de lui, le serveur doit généralement être également configuré pour répondre à un domaine particulier nom, et ce nom doit figurer dans la demande envoyée par le client (c'est-à-dire le navigateur Web)
Je dis «généralement» parce que c'est presque toujours ainsi, mais il existe en fait des méthodes permettant de configurer le serveur http pour qu'il réponde si seule l'adresse IP est utilisée.
Nous devons comprendre les différences entre les adresses IP virtuelles et les adresses IP dédiées.
Si un site Web possède une adresse IP dédiée (non partagée), http://123.456.789.012 (par exemple) affichera le site Web.
Essayez ceci, qui est l'adresse IP dédiée d'un site que je possède, www.negativeiongenerators.com: http://75.126.128.174 Mais comme d'autres l'ont dit, ce n'est généralement pas une bonne idée.