in

Les serveurs Web ne détiennent-ils qu’un seul site Web chacun?

Lorsque vous commencez à apprendre comment les noms de domaine, les adresses IP, les serveurs Web et les sites Web s’intègrent et fonctionnent ensemble, cela peut parfois être un peu déroutant ou accablant. Comment tout cela fonctionne-t-il si facilement? Le post de questions-réponses des super-utilisateurs d’aujourd’hui contient les réponses aux questions d’un lecteur curieux.

La question

Le lecteur SuperUser user3407319 veut savoir si les serveurs Web ne contiennent qu’un seul site Web chacun:

D’après ce que je comprends du DNS et de la liaison d’un nom de domaine avec l’adresse IP du serveur Web sur lequel un site Web est stocké, cela signifie-t-il que chaque serveur Web ne peut contenir qu’un seul site Web? Si les serveurs Web contiennent plus d’un site Web, comment tout cela est-il résolu pour que je puisse accéder au site Web de mon choix sans problème ni confusion?

Les serveurs Web ne contiennent-ils qu’un seul site Web chacun ou en contiennent-ils plus?

La réponse

Bob, le contributeur SuperUser, a la réponse pour nous:

Fondamentalement, le navigateur inclut le nom de domaine dans la requête HTTP afin que le serveur Web sache quel domaine a été demandé et peut répondre en conséquence.

Requêtes HTTP

Voici comment se déroule votre requête HTTP typique:

1. L’utilisateur fournit une URL, sous la forme http: // hôte: port / chemin.

2. Le navigateur extrait la partie hôte (domaine) de l’URL et la traduit en une adresse IP (si nécessaire) dans un processus appelé résolution de nom. Cette traduction peut se produire via DNS, mais ce n’est pas obligatoire (par exemple, le fichier d’hôtes locaux sur les systèmes d’exploitation courants contourne DNS).

3. Le navigateur ouvre une connexion TCP au port spécifié ou utilise par défaut le port 80 sur cette adresse IP.

4. Le navigateur envoie une requête HTTP. Pour HTTP / 1.1, cela ressemble à ceci:

L’en-tête d’hôte est standard et requis dans HTTP / 1.1. Il n’a pas été spécifié dans la spécification HTTP / 1.0, mais certains serveurs le prennent quand même en charge.

À partir de là, le serveur Web dispose de plusieurs éléments d’information qu’il peut utiliser pour décider de la réponse. Notez qu’il est possible qu’un seul serveur Web soit lié à plusieurs adresses IP.

  • L’adresse IP demandée, depuis le socket TCP (l’adresse IP du client est également disponible, mais elle est rarement utilisée, et parfois pour le blocage / filtrage)
  • Le port demandé, depuis le socket TCP
  • Le nom d’hôte demandé, tel que spécifié dans l’en-tête d’hôte par le navigateur dans la requête HTTP
  • Le chemin demandé
  • Tout autre en-tête (cookies, etc.)

Comme vous semblez l’avoir remarqué, la configuration d’hébergement mutualisée la plus courante de nos jours place plusieurs sites Web sur une seule adresse IP: combinaison de ports, ne laissant que l’hôte pour différencier les sites Web.

Ceci est connu comme un Hôte virtuel basé sur le nom dans Apache-land, alors que Nginx les appelle Noms de serveurs dans les blocs de serveurs, et IIS préfère Serveur virtuel.

Qu’en est-il du HTTPS?

HTTPS est un peu différent. Tout est identique jusqu’à l’établissement de la connexion TCP, mais après cela, un tunnel TLS chiffré doit être établi. Le but est de ne pas divulguer d’informations sur la demande.

Afin de vérifier que le serveur Web possède réellement ce domaine, le serveur Web doit envoyer un certificat signé par un tiers de confiance. Le navigateur comparera alors ce certificat avec le domaine qu’il a demandé.

Cela pose un problème. Comment le serveur Web sait-il quel certificat d’hôte / site Web envoyer s’il doit le faire avant la réception de la requête HTTP?

Traditionnellement, cela était résolu en ayant une adresse IP (ou un port) dédié pour chaque site Web nécessitant HTTPS. De toute évidence, cela est devenu problématique car nous manquons d’adresses IPv4.

Entrer SNI (Indication du nom du serveur). Le navigateur transmet maintenant le nom d’hôte pendant les négociations TLS, de sorte que le serveur Web dispose de ces informations suffisamment tôt pour envoyer le certificat correct. Du côté du serveur Web, la configuration est très similaire à la façon dont les hôtes virtuels HTTP sont configurés.

L’inconvénient est que le nom d’hôte est maintenant passé sous forme de texte brut avant le chiffrement et qu’il s’agit essentiellement d’informations qui ont fui. Ceci est généralement considéré comme un compromis acceptable, même si le nom d’hôte est normalement exposé dans une requête DNS de toute façon.

Que faire si vous demandez un site Web par adresse IP uniquement?

Ce que fait le serveur Web lorsqu’il ne sait pas quel hôte spécifique vous avez demandé dépend de l’implémentation et de la configuration du serveur Web. En règle générale, il existe un site Web «par défaut», «fourre-tout» ou «de secours» spécifié qui fournira des réponses à toutes les demandes qui ne spécifient pas explicitement un hôte.

Ce site Web par défaut peut être son propre site Web indépendant (affichant souvent un message d’erreur), ou l’un des autres sites Web du serveur Web en fonction des préférences de l’administrateur du serveur Web.

Avez-vous quelque chose à ajouter à l’explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d’autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Qu'est-ce que l'overclocking?  Le guide du débutant pour comprendre comment les geeks accélèrent leurs PC

Qu’est-ce que l’overclocking? Le guide du débutant pour comprendre comment les geeks accélèrent leurs PC

Comment configurer un serveur proxy dans Firefox

Comment configurer un serveur proxy dans Firefox