Cela fait partie du protocole HTTP 1.1.
Plus précisément, le protocole HTTP 1.1 comprend un en-tête appelé «hôte:» qui spécifie à quel site Web sur un serveur particulier le client tente d'accéder.
Donc, si snoopy.net et woodstock.org partagent tous les deux 192.0.32.10 et que votre navigateur essaie d'obtenir le contenu de http://snoopy.net/doghouse
la requête http spécifique, cela ressemblerait à:
GET /doghouse HTTP/1.1
Host: snoopy.net
Si l'URL souhaitée est http://woodstock.org/seeds
la demande ressemblerait à
GET /seeds HTTP/1.1
Host: woodstock.org
Dans les deux cas, il y aurait un socket TCP entre votre ordinateur et le port 80 du serveur. Le serveur saurait obtenir le contenu de /var/www/snoopy.net ou /var/www/woodstock.org/ en fonction de l'en-tête Host.
Il y aurait d'autres en-têtes pour les cookies et d'autres choses comme le type de navigateur et le contenu autorisé, mais l'en-tête "Host" est précisément ce qui permet au serveur Web de savoir quel site Web virtuel est souhaité.
Il y a plus dans le RFC2616 .
C'est aussi pourquoi les sites https * doivent *** avoir leur propre adresse IP - l'échange de clés ssl et la vérification des certificats ont lieu avant la transaction http, donc le serveur http ne saura pas donner le certificat pour "woodstock". org "ou" snoopy.net "lorsqu'il reçoit une connexion https sur le port 443 de 192.0.32.10.
modifier
** dans les commentaires, Grawity souligne qu'il existe des extensions SSL dans la spécification TLS qui permettent au serveur de savoir à quel site Web l'utilisateur tente d'accéder, et que la plupart des navigateurs Web modernes ont ces extensions, il en va de même un peu trop fort.
Il y a quelque chose que tous les navigateurs modernes envoient avec la demande, appelé l'en-tête "Host:".
La demande réelle que Firefox envoie pour cette page est:
Comme vous pouvez le voir,
bit identifie le site Web en question.Dans IIS et Apache, vous pouvez configurer des sites Web virtuels qui n'acceptent que les demandes d'une combinaison IP / hôte spécifique.
En ce qui concerne votre problème particulier, vous devrez lire comment votre hébergeur particulier souhaite que vous demandiez la configuration.
la source
La technique pour héberger plus d'un domaine / sous-domaine sur une seule adresse IP / hôte est appelée hôtes virtuels . La demande http get contient le nom de domaine pour lequel les demandes sont destinées, ce qui permet au serveur Web de faire correspondre la demande avec un domaine virtuel particulier.
Si vous avez plusieurs hôtes physiques en interne avec une seule adresse IP externe, vous voudrez peut-être envisager de configurer un proxy inverse pour transférer les demandes vers la machine / l'adresse IP interne correcte.
la source
La fonctionnalité de votre serveur Web est normalement appelée «hôtes virtuels». Une fois que vous pointez les entrées DNS pour pointer vers cette adresse IP (comme mentionné dans les autres réponses), le serveur servira alors les différents sites en fonction de l'hôte demandé.
Pour ce qui est de pointer vers une autre case. Vous pouvez configurer des redirections dans la plupart des serveurs Web si vous vous attendez à obtenir la requête en premier. Si vous parlez de sous-domaines, il vous suffit de pointer chacun des sous-domaines vers une adresse IP différente.
ie host.com -> IP 1 puis www.host.com -> IP 2 et mail.host.com -> IP 3
Si vous voulez des réponses plus spécifiques, vous devez dire quel logiciel de serveur Web sur quel système d'exploitation vous utilisez.
Vous trouverez peut-être que ServeFault est un meilleur endroit pour cette question.
la source
En bref...
Un - Définissez les entrées DNS de vos différents domaines pour qu'elles pointent toutes vers votre box.
Deux - Comme décrit par d'autres, configurez votre serveur Web (vous ne dites pas lequel) pour correspondre au nom d'hôte demandé.
De cette façon, toutes les demandes pour tous vos domaines vont sur la même machine et sa configuration prend le domaine demandé et l'achemine vers le bon dossier contenant le contenu de ce site.
la source
Il me semble de votre question que vous avez un serveur physique séparé pour le deuxième site Web. Dans ce cas, vous ne pourrez pas utiliser une seule adresse IP pour les deux serveurs. Vous pouvez soit a) obtenir une deuxième adresse IP publique pour votre deuxième hôte ou b) configurer un proxy intelligent qui transmet les demandes à différents serveurs de votre réseau interne en fonction des en-têtes d'hôte. Je suis à peu près sûr que b) est possible mais je n'ai aucune idée de comment cela fonctionne, vous devrez donc demander à quelqu'un d'autre si c'est ce que vous essayez de faire.
la source
Si je lis bien votre question, vous avez deux ordinateurs différents partageant une adresse IP via NAT (Network Address Translation)? Si c'est le cas, vous devrez avoir un site à écouter sur un port différent (pas 80) - il n'y a pas de bon moyen que je sache pour que le routeur envoie des requêtes à différents ordinateurs en fonction des métadonnées HTTP "Host". Il vaut mieux obtenir une deuxième adresse IP pour votre deuxième serveur.
la source