Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
doc /
apache2-doc /
manual /
fr /
vhosts /
Delete
Unzip
Name
Size
Permission
Date
Action
details.html
24.74
KB
-rw-r--r--
2026-06-12 05:08
examples.html
27.71
KB
-rw-r--r--
2026-06-12 05:08
fd-limits.html
10.09
KB
-rw-r--r--
2026-06-12 05:08
index.html
9.91
KB
-rw-r--r--
2026-06-12 05:08
ip-based.html
13.58
KB
-rw-r--r--
2026-06-12 05:08
mass.html
21.12
KB
-rw-r--r--
2026-06-12 05:08
name-based.html
19.28
KB
-rw-r--r--
2026-06-12 05:08
Save
Rename
<!DOCTYPE html SYSTEM "about:legacy-compat"> <html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta content="width=device-width, initial-scale=1" name="viewport"> <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX This file is generated from xml source: DO NOT EDIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> <title>Détails sur le fonctionnement des serveurs virtuels - Serveur HTTP Apache Version 2.4</title> <link href="../../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet"> <link href="../../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size"> <link href="../../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../../style/css/prettify.css"> <script src="../../style/scripts/prettify.min.js"> </script> <link href="../../images/favicon.png" rel="shortcut icon"></head> <body id="manual-page"><div id="page-header"> <p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p> <p class="apache">Serveur HTTP Apache Version 2.4</p> <img alt="" src="../../images/feather.png"></div> <div class="up"><a href="./index.html"><img title="<-" alt="<-" src="../../images/left.gif"></a></div> <div id="path"> <a href="https://www.apache.org/">Apache</a> > <a href="https://httpd.apache.org/">Serveur HTTP</a> > <a href="https://httpd.apache.org/docs/">Documentation</a> > <a href="../index.html">Version 2.4</a> > <a href="./index.html">Serveurs virtuels</a></div><div id="page-content"><div id="preamble"><h1>Détails sur le fonctionnement des serveurs virtuels</h1> <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button> <div class="toplang"> <p><span>Langues Disponibles: </span><a href="../../en/vhosts/details.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../../fr/vhosts/details.html" title="Français"> fr </a> | <a href="../../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | <a href="../../tr/vhosts/details.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> </div> <p>Ce document vise à expliquer dans le détail comment le serveur HTTP Apache procède lors du choix de l'utilisation d'un serveur virtuel en fonction d'une requête reçue.</p> <p>Il est recommandé de lire la documentation<a href="name-based.html#namevip"> Serveurs virtuels à base de nom et serveurs virtuels à base d'adresse IP</a> pour déterminer quel type de serveur virtuel nous convient le mieux, puis de lire les documentations <a href="name-based.html">serveurs virtuels à base de nom</a> ou <a href="ip-based.html">serveurs virtuels à base d'adresse IP</a>, et enfin d'étudier <a href="examples.html">quelques exemples</a>.</p> <p>Si vous voulez entrer dans les détails, vous pouvez revenir vers cette page.</p> </div> <div id="quickview"><ul id="toc"><li><img alt="" src="../../images/down.gif"> <a href="#configparsing">Fichier de configuration</a></li> <li><img alt="" src="../../images/down.gif"> <a href="#hostmatching">Choix du serveur virtuel</a></li> <li><img alt="" src="../../images/down.gif"> <a href="#tips">Trucs et astuces</a></li> </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="ip-based.html">Support des serveurs virtuels à base d'adresse IP</a></li><li><a href="name-based.html">Support des serveurs virtuels à base de nom</a></li><li><a href="examples.html">Exemples de serveurs virtuels pour une configuration courante</a></li><li><a href="mass.html">Hébergement virtuel de masse configuré dynamiquement</a></li></ul></div> <div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="configparsing">Fichier de configuration <a title="Lien permanent" href="#configparsing" class="permalink">¶</a></h2> <p>Un <em>serveur principal (main_server)</em> contient toutes les définitions qui apparaissent en dehors des sections <code><VirtualHost></code>.</p> <p>Les serveurs virtuels, aussi appelés <em>vhosts</em> (pour virtual hosts), sont définis par les sections <code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>.</p> <p>Chaque directive <code>VirtualHost</code> comporte une ou plusieurs adresses et des ports optionnels.</p> <p>Il est possible d'utiliser des noms d'hôtes dans la définition d'un serveur virtuel, mais ils seront résolus en adresses IP au démarrage du serveur, et si une résolution de nom échoue, cette définition de serveur virtuel sera ignorée. Cette méthode est par conséquent déconseillée.</p> <p>L'adresse peut être spécifiée sous la forme <code>*</code>, ce qui conviendra à la requête si aucun autre serveur virtuel ne possède l'adresse IP explicite correspondant à celle de la requête.</p> <p>L'adresse qui apparaît dans la directive <code>VirtualHost</code> peut être associée à un port optionnel. Si aucun port n'est spécifié, il s'agit d'un port générique qui peut aussi être spécifié comme <code>*</code>. Le port générique correspond à toutes les valeurs de port.</p> <p>(Il ne faut pas confondre les numéros de port sur lesquels Apache est en écoute avec les numéros de port spécifiés dans la directive <code>VirtualHost</code> ; ces derniers ne servent qu'à définir le <code>serveur virtuel</code> qui sera sélectionné pour traiter la requête. Pour définir les ports sur lesquels Apache est en écoute, utilisez la directive <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>). </p> <p>L'ensemble des adresses (y compris les résultats multiples <code>A</code> issus des requêtes DNS) est appelé <em>jeu d'adresses</em> du serveur virtuel.</p> <p>Apache fait automatiquement sa sélection à partir de l'en-tête HTTP <code>Host</code> fourni par le client, lorsque la correspondance la plus exacte du point de vue adresse IP/port a lieu pour plusieurs serveurs virtuels.</p> <p>La directive <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> peut apparaître en quelque endroit de la définition d'un serveur. Cependant, chaque occurrence écrase la précédente (pour ce serveur). Si aucune directive <code>ServerName</code> n'est spécifiée, le serveur tente de déterminer le nom du serveur à partir de l'adresse IP.</p> <p>Le premier serveur virtuel à base de nom apparaissant dans le fichier de configuration pour une paire IP:port donnée est significatif car c'est lui qui sera utilisé pour toutes les requêtes reçues sur cette adresse IP/port et pour laquelle aucun autre serveur virtuel ne possède un ServerName ou un ServerAlias correspondant. Il sera aussi utilisé pour toutes les connexions SSL si le serveur ne supporte pas l'<a class="glossarylink" href="../glossary.html#servernameindication" title="voir glossaire">Indication du nom du serveur</a>.</p> <p>Tous les noms spécifiés au sein d'une section <code>VirtualHost</code> sont traités comme un <code>ServerAlias</code> (sans caractères génériques), mais ne sont écrasés par aucune directive <code>ServerAlias</code>.</p> <p>Pour chaque serveur virtuel, diverses valeurs sont initialisées par défaut. En particulier :</p> <ol> <li>Dans le cas où un serveur virtuel ne contient pas de directives <code class="directive"><a href="../mod/core.html#serveradmin">ServerAdmin</a></code>, <code class="directive"><a href="../mod/core.html#timeout">Timeout</a></code>, <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code>, <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code>, <code class="directive"><a href="../mod/core.html#maxkeepaliverequests">MaxKeepAliveRequests</a></code>, <code class="directive"><a href="../mod/mpm_common.html#receivebuffersize">ReceiveBufferSize</a></code>, ou <code class="directive"><a href="../mod/mpm_common.html#sendbuffersize">SendBufferSize</a></code>, alors la valeur de chacun de ces paramètres est héritée de celle du serveur principal. (C'est à dire, héritée de la valeur finale après lecture de la configuration du serveur principal.)</li> <li>Les permissions par défaut sur les répertoires de chaque serveur virtuel sont assemblées avec celles du serveur principal. Elles concernent également toutes les informations de configuration par répertoire pour tous les modules.</li> <li>Les configurations par serveur pour chaque module sont assemblées à partir de celles du serveur principal.</li> </ol> <p>L'essentiel des valeurs de configuration des serveurs virtuels provient de valeurs par défaut issues du serveur principal. Mais la position dans le fichier de configuration des directives du serveur principal n'a pas d'importance -- l'ensemble de la configuration du serveur principal est lu avant que ces valeurs par défaut soient appliquées aux serveur virtuels. Ainsi, même si la définition d'une valeur apparaît après celle d'un serveur virtuel, cette valeur peut affecter la definition du serveur virtuel.</p> <p>Dans le cas où le serveur principal n'a pas de <code>ServerName</code> à ce stade, le nom de la machine sur laquelle tourne le programme <code class="program"><a href="../programs/httpd.html">httpd</a></code> est utilisé à sa place. Nous appellerons <em>jeu d'adresses du serveur principal</em> les adresses IP renvoyées par une résolution DNS sur le <code>ServerName</code> du serveur principal.</p> <p>Pour tous les champs <code>ServerName</code> non définis, dans le cas d'une configuration en serveur virtuel par nom, la valeur adoptée par défaut est la première adresse donnée dans la section <code>VirtualHost</code> qui définit le serveur virtuel.</p> <p>Si un serveur virtuel contient la valeur magique <code>_default_</code>, il fonctionne sur le même <code>ServerName</code> que le serveur principal.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="hostmatching">Choix du serveur virtuel <a title="Lien permanent" href="#hostmatching" class="permalink">¶</a></h2> <p>Le serveur détermine le serveur virtuel à utiliser pour une requête en deux phases : une recherche basée sur l’IP lorsque la connexion est établie, puis une recherche optionnelle à base de nom à la réception de la requête.</p> <h3 id="hashtable">Phase 1 : recherche sur l’adresse IP et le port</h3> <p>Lorsqu’une connexion est établie, le serveur recherche l’adresse IP et le port de destination dans sa liste d’adresses/ports des <code>serveurs virtuels</code>. Cette recherche respecte un ordre de priorité strict :</p> <table class="bordered"><tr class="header"><th>Priorité</th><th>Type de correspondance</th><th>Exemple</th></tr> <tr><td>1</td><td>Adresse IP et port exacts</td> <td><code><VirtualHost 10.0.0.1:80></code></td></tr> <tr class="odd"><td>2</td><td>Adresse IP exacte, port générique</td> <td><code><VirtualHost 10.0.0.1:*></code></td></tr> <tr><td>3</td><td>Adresse IP générique (<code>*</code>), port exact</td> <td><code><VirtualHost *:80></code></td></tr> <tr class="odd"><td>4</td><td>Adresse IP et port génériques</td> <td><code><VirtualHost *:*></code></td></tr> <tr><td>5</td><td>Serveur principal</td> <td>(aucun <code>serveur virtuel</code> ne correspond)</td></tr> </table> <div class="note"><h3>Important</h3> <p>Le serveur utilise la <em>première correspondance trouvée</em> en suivant cet ordre. Lorsqu’une correspondance est trouvée à un niveau de priorité donné, aucun niveau de priorité inférieur n’est considéré — même si un serveur virtuel de priorité inférieure possède un <code>ServerName</code> qui correspond au contenu de l’en-tête <code>Host</code> de la requête. La recherche à base de nom (Phase 2) n’intervient que lorsque deux serveurs virtuels de même niveau de priorité peuvent correspondre.</p> </div> <p>S'il existe des définitions <code>VirtualHost</code> pour l'adresse IP, l'étape suivante consiste à déterminer si nous avons à faire à un serveur virtuel à base de nom ou d'adresse IP.</p> <h3 id="ipbased">Serveur virtuel par IP</h3> <p>Si la Phase 1 ne trouve qu’un seul <code>serveur virtuel</code> correspondant, la requête est servie directement depuis ce dernier sans effectuer d’autre recherche.</p> <h3 id="namebased">Phase 2 : recherche à base de nom</h3> <p>Si la phase 1 trouve plusieurs <code>serveurs virtuels</code> correspondants de même niveau de priorité, le serveur effectue une recherche à base de nom parmi ces serveurs virtuels en utilisant l’en-tête <code>Host:</code> de la requête (ou le nom d’hôte SNI pour les connexions SSL).</p> <p>Si la connexion utilise SSL, si le serveur supporte l'<a class="glossarylink" href="../glossary.html#servernameindication" title="voir glossaire">Indication de nom de serveur</a>, et si la négociation du client SSL inclut l'extension TLS dans le nom d'hôte requis, alors ce nom d'hôte sera utilisé par la suite, tout comme un en-tête <code>Host:</code> aurait été utilisé dans le cas d'une connexion non-SSL. Si ces conditions ne sont pas réunies, le premier serveur virtuel à base de nom dont l'adresse correspond sera utilisé pour les connexions SSL. Ceci est important car c'est le serveur virtuel qui détermine quel certificat le serveur va utiliser pour la connexion.</p> <p>La recherche de serveurs virtuels correspondants s’effectue selon leur ordre d’apparition dans le fichier de configuration :</p> <ol> <li>Les contenus des directives <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> et <code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code> de chaque serveur virtuel sont comparés au nom d’hôte de la requête. La première correspondance est retenue.</li> <li>Si aucun <code>ServerName</code> ou <code>ServerAlias</code> ne correspond, c’est le <em>premier serveur virtuel de la liste</em> qui sera choisi. Il s’agit du <em>serveur virtuel à base de nom par défaut</em> pour cette combinaison adresse/port.</li> </ol> <p>Un champ d’en-tête <code>Host:</code> peut contenir un numéro de port, mais httpd l’ignore toujours et effectue sa recherche de correspondance avec le port réel auquel le client a envoyé sa requête.</p> <p>Si la requête ne possède pas d’en-tête <code>Host:</code> (comme les requêtes HTTP/1.0), le premier serveur virtuel qui correspond est choisi. Mais si une directive <code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code> est configurée pour un des serveurs virtuels correspondants et que l’URL de la requête correspond à ce chemin, la requête sera servie depuis ce serveur virtuel. Il s’agit d’un mécanisme patrimonial pour les clients HTTP/1.0 ; voir l’exemple avec <a href="examples.html#serverpath">ServerPath</a> pour les détails.</p> <h3 id="persistent">Connexions persistantes</h3> <p>La <em>recherche par adresse IP</em> (Phase 1) n'est effectuée qu'<em>une fois</em> pour une session TCP/IP particulière, alors que la recherche par nom (Phase 2) est effectuée pour <em>chaque</em> requête au cours d'une connexion persistante (KeepAlive). En d'autres termes, il est possible pour un client de faire des requêtes pour des pages sur différents serveurs virtuels par nom, au cours d'une unique connexion persistante.</p> <h3 id="absoluteURI">URI absolu</h3> <p>Au cas où l'URI de la requête est absolu, et que son nom de serveur et son port correspondent au serveur principal (ou l'un des serveurs virtuels configurés), <em>et</em> qu'ils correspondent à l'adresse et au port de la requête, alors l'URI est amputé de son préfixe protocole/nom de serveur/port et traité par le serveur correspondant (principal ou virtuel). Si cette correspondance n'existe pas, l'URI reste inchangé et la requête est considérée comme une requête d'un serveur mandataire (proxy).</p> <h3 id="observations">Observations</h3> <ul> <li>La sélection d'un serveur virtuel en fonction de son nom est un processus qui intervient <em>après</em> que le serveur a cerné la liste de candidats qui correspondent du point de vue adresse IP.</li> <li>Si vous ne tenez pas compte de l'adresse IP à laquelle le client s'est connecté, indiquez un caractère "<code>*</code>" comme adresse pour tous les serveurs virtuels, et la sélection du serveur virtuel en fonction du nom s'appliquera alors à tous les serveurs virtuels définis.</li> <li>Les vérifications sur <code>ServerName</code> et <code>ServerAlias</code> ne sont jamais réalisées pour les serveurs virtuels par IP (celles pour lesquelles il n’y a qu’un seul serveur virtuel pour cette adresse IP/port).</li> <li>Seul l'ordre des serveurs virtuels par nom pour une adresse donnée a une importance. Le serveur virtuel par nom qui est présent en premier dans la configuration se voit attribué la priorité la plus haute pour les requêtes arrivant sur son jeu d'adresses IP.</li> <li>Le numéro de port contenu dans l'en-tête <code>Host:</code> n'est jamais utilisé pour les tests de correspondances. Apache ne prend en compte que le numéro de port sur lequel le client a envoyé la requête.</li> <li>Si deux serveurs virtuels partagent la même adresse, la sélection se fera implicitement sur le nom. Il s'agit d'une nouvelle fonctionnalité de la version 2.3.11.</li> <li>Le serveur principal ne sert les requêtes que lorsque l'adresse IP et le port demandés par le client ne correspondent à aucun serveur virtuel (y compris un serveur virtuel <code>*</code>). En d'autres termes, le serveur principal n'est utile que pour les combinaisons adresse/port non spécifiées (sauf quand un serveur virtuel <code>_default_</code> correspond au port).</li> <li>Il ne faut jamais employer de noms DNS dans des directives <code>VirtualHost</code>, car cela oblige le serveur a s'appuyer sur le DNS au moment du démarrage. De plus, vous vous exposez à des problèmes de sécurité si vous n'avez pas la maîtrise du DNS pour la totalité de vos domaines. Voir la documentation <a href="../dns-caveats.html">disponible ici</a>, ainsi que les deux points précisés ci-après.</li> <li>Un nom de serveur <code>ServerName</code> devrait toujours être indiqué pour chaque serveur virtuel. Sans cela, une résolution DNS est nécessaire pour chaque serveur virtuel.</li> </ul> </div><div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="tips">Trucs et astuces <a title="Lien permanent" href="#tips" class="permalink">¶</a></h2> <p>En plus des points évoqués sur la page des <a href="../dns-caveats.html#tips">problèmes liés au DNS</a>, voici quelques points intéressants :</p> <ul> <li>Toujours positionner les définitions relatives au serveur principal avant toute définition <code>VirtualHost</code>. (Ceci améliore grandement la lisibilité de la configuration -- la manière dont la configuration est interprétée après la lecture des fichiers ne met pas en évidence le fait que les définitions positionnées avant et surtout après les serveurs virtuels peuvent impacter le fonctionnement de tous les serveurs virtuels.)</li> </ul> </div></div> <div class="bottomlang"> <p><span>Langues Disponibles: </span><a href="../../en/vhosts/details.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../../fr/vhosts/details.html" title="Français"> fr </a> | <a href="../../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | <a href="../../tr/vhosts/details.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> </div><div id="footer"> <p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autorisé sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> <p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!-- if (typeof(prettyPrint) !== 'undefined') { prettyPrint(); } var langToggle = document.querySelector('.lang-toggle'); var topLang = document.querySelector('.toplang'); if (langToggle && topLang) { langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); }); } var qv = document.getElementById('quickview'); if (qv) { document.body.appendChild(qv); var qvBtn = document.createElement('button'); qvBtn.className = 'qv-toggle'; qvBtn.setAttribute('aria-label', 'Toggle page navigation'); qvBtn.innerHTML = '☰'; document.body.appendChild(qvBtn); qvBtn.addEventListener('click', function() { var isOpen = qv.classList.toggle('open'); if (isOpen) { qv.style.top = window.scrollY + 10 + 'px'; } }); window.addEventListener('scroll', function() { qv.classList.remove('open'); }); } //--><!]]></script> </body></html>