1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>Détails sur le fonctionnement des serveurs virtuels - Serveur Apache HTTP</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <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" />
12 <script src="../style/scripts/prettify.js" type="text/javascript">
15 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
16 <body id="manual-page"><div id="page-header">
17 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
18 <p class="apache">Serveur Apache HTTP Version 2.5</p>
19 <img alt="" src="../images/feather.gif" /></div>
20 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
22 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Serveurs virtuels</a></div><div id="page-content"><div id="preamble"><h1>Détails sur le fonctionnement des serveurs virtuels</h1>
24 <p><span>Langues Disponibles: </span><a href="../en/vhosts/details.html" hreflang="en" rel="alternate" title="English"> en </a> |
25 <a href="../fr/vhosts/details.html" title="Français"> fr </a> |
26 <a href="../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
27 <a href="../tr/vhosts/details.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
29 <div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
30 anglaise pour les changements récents.</div>
33 <p>Ce document vise à expliquer dans le détail comment le serveur
34 HTTP Apache procède lors du choix de l'utilisation
35 d'un serveur virtuel en fonction d'une requête reçue.</p>
37 <p>Il est recommandé de lire la documentation<a href="name-based.html#namevip">
38 Serveurs virtuels à base de nom et serveurs virtuels à base
39 d'adresse IP</a> pour déterminer quel type de serveur virtuel nous
40 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
41 d'étudier <a href="examples.html">quelques exemples</a>.</p>
43 <p>Si vous voulez entrer dans les détails, vous pouvez revenir vers
47 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#configparsing">Fichier de configuration</a></li>
48 <li><img alt="" src="../images/down.gif" /> <a href="#hostmatching">Choix du serveur virtuel</a></li>
49 <li><img alt="" src="../images/down.gif" /> <a href="#tips">Trucs et astuces</a></li>
50 </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="ip-based.html">Support des serveurs virtuels à base
51 d'adresse IP</a></li><li><a href="name-based.html">Support des serveurs virtuels à base
52 de nom</a></li><li><a href="examples.html">Exemples de serveurs virtuels pour une
53 configuration courante</a></li><li><a href="mass.html">Hébergement virtuel de masse configuré
54 dynamiquement</a></li></ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
55 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
57 <h2><a name="configparsing" id="configparsing">Fichier de configuration</a></h2>
59 <p>Un <em>serveur principal (main_server)</em> contient toutes
60 les définitions qui apparaissent en dehors des sections
61 <code><VirtualHost></code>.</p>
63 <p>Les serveurs virtuels, aussi
64 appelés <em>vhosts</em> (pour virtual hosts), sont définis par les
65 sections <code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>.</p>
67 <p>Chaque directive <code>VirtualHost</code> comporte une ou
68 plusieurs adresses et des ports optionnels.</p>
70 <p>Il est possible d'utiliser des noms d'hôtes dans la définition
71 d'un serveur virtuel, mais ils seront résolus en adresses IP au
72 démarrage du serveur, et si une résolution de nom échoue, cette
73 définition de serveur virtuel sera ignorée. Cette méthode est par
74 conséquent déconseillée.</p>
77 être spécifiée sous la forme <code>*</code>, ce qui conviendra à la
78 requête si aucun autre serveur virtuel ne possède l'adresse IP
79 explicite correspondant à celle de la requête.</p>
81 <p>L'adresse qui apparaît dans la directive <code>VirtualHost</code>
82 peut être associée à un port optionnel. Si aucun port n'est
83 spécifié, il s'agit d'un port générique qui peut aussi être spécifié
84 comme <code>*</code>. Le port générique correspond à toutes les
87 <p>(Il ne faut pas confondre les numéros de port sur lesquels Apache
88 est en écoute avec les numéros de port spécifiés dans la directive
89 <code>VirtualHost</code> ; ces derniers ne servent qu'à définir le
90 <code>serveur virtuel</code> qui sera sélectionné pour traiter la
91 requête. Pour définir les ports sur lesquels Apache est en écoute,
92 utilisez la directive <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>).
95 <p>L'ensemble des adresses (y compris les résultats multiples
96 <code>A</code> issus des requêtes DNS) est appelé <em>jeu
97 d'adresses</em> du serveur virtuel.</p>
99 <p>Apache fait automatiquement sa sélection à partir de l'en-tête
100 HTTP <code>Host</code> fourni par le client, lorsque la
101 correspondance la plus exacte du point de vue adresse IP/port a lieu
102 pour plusieurs serveurs virtuels.</p>
104 <p>La directive <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> peut
105 apparaître en quelque endroit de la définition d'un serveur.
106 Cependant, chaque occurrence écrase la précédente (pour ce serveur).
107 Si aucune directive <code>ServerName</code> n'est spécifiée, le
108 serveur tente de déterminer le nom du serveur à partir de l'adresse
111 <p>Le premier serveur virtuel à base de nom apparaissant dans le
112 fichier de configuration pour une paire IP:port donnée est
113 significatif car c'est lui qui sera utilisé pour toutes les requêtes
114 reçues sur cette adresse IP/port et pour laquelle aucun autre
115 serveur virtuel ne possède un ServerName ou un ServerAlias
116 correspondant. Il sera aussi utilisé pour toutes les connexions SSL
117 si le serveur ne supporte pas l'<a class="glossarylink" href="../glossary.html#servernameindication" title="voir glossaire">Indication du nom du serveur</a>.</p>
119 <p>Pour chaque serveur virtuel, diverses valeurs sont initialisées
120 par défaut. En particulier :</p>
123 <li>Dans le cas où un serveur virtuel ne contient pas de directives
124 <code class="directive"><a href="../mod/core.html#serveradmin">ServerAdmin</a></code>,
125 <code class="directive"><a href="../mod/core.html#timeout">Timeout</a></code>,
126 <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code>,
127 <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code>,
128 <code class="directive"><a href="../mod/core.html#maxkeepaliverequests">MaxKeepAliveRequests</a></code>,
129 <code class="directive"><a href="../mod/mpm_common.html#receivebuffersize">ReceiveBufferSize</a></code>,
130 ou <code class="directive"><a href="../mod/mpm_common.html#sendbuffersize">SendBufferSize</a></code>,
131 alors la valeur de chacun de ces paramètres est héritée de celle du
132 serveur principal. (C'est à dire, héritée de la valeur finale après
133 lecture de la configuration du serveur principal.)</li>
135 <li>Les permissions par défaut sur les répertoires de chaque
136 serveur virtuel sont assemblées avec celles du serveur principal.
137 Elles concernent également toutes les informations de configuration
138 par répertoire pour tous les modules.</li>
140 <li>Les configurations par serveur pour chaque module sont assemblées
141 à partir de celles du serveur principal.</li>
144 <p>L'essentiel des valeurs de configuration des serveurs virtuels
145 provient de valeurs par défaut issues du serveur principal.
146 Mais la position dans le fichier de configuration des directives
147 du serveur principal n'a pas d'importance -- l'ensemble de la
148 configuration du serveur principal est lu avant que ces valeurs par
149 défaut soient appliquées aux serveur virtuels. Ainsi, même si la
150 définition d'une valeur apparaît après celle d'un serveur virtuel,
151 cette valeur peut affecter la definition du serveur virtuel.</p>
153 <p>Dans le cas où le serveur principal n'a pas de <code>ServerName</code>
154 à ce stade, le nom de la machine sur laquelle tourne le programme
155 <code class="program"><a href="../programs/httpd.html">httpd</a></code> est utilisé à sa place. Nous appellerons
156 <em>jeu d'adresses du serveur principal</em> les adresses IP
157 renvoyées par une résolution DNS sur le <code>ServerName</code>
158 du serveur principal.</p>
160 <p>Pour tous les champs <code>ServerName</code> non définis, dans
161 le cas d'une configuration en serveur virtuel par nom, la valeur
162 adoptée par défaut est la première adresse donnée dans la section
163 <code>VirtualHost</code> qui définit le serveur virtuel.</p>
165 <p>Si un serveur virtuel contient la valeur magique
166 <code>_default_</code>, il fonctionne sur le même <code>ServerName</code>
167 que le serveur principal.</p>
169 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
170 <div class="section">
171 <h2><a name="hostmatching" id="hostmatching">Choix du serveur virtuel</a></h2>
173 <p>À la réception d'une requête, le serveur procède comme suit pour
174 déterminer quel serveur virtuel utiliser :</p>
176 <h3><a name="hashtable" id="hashtable">Recherche de l'adresse IP</a></h3>
178 <p>Lors d'une première connexion sur une adresse/port, le serveur
179 recherche toutes les directives <code>VirtualHost</code> qui
180 possèdent la même adresse IP/port.</p>
182 <p>S'il n'y a aucune correspondance exacte pour cette adresse/port,
183 la recherche s'effectue sur la valeur générique (<code>*</code>).</p>
185 <p>Si aucune correspondance n'est enfin trouvée, la requête sera
186 servie par le serveur principal.</p>
188 <p>S'il existe des définitions <code>VirtualHost</code> pour
189 l'adresse IP, l'étape suivante consiste à déterminer si nous avons à
190 faire à un serveur virtuel à base de nom ou d'adresse IP.</p>
194 <h3><a name="ipbased" id="ipbased">Serveur virtuel par IP</a></h3>
196 <p>Si une seule section <code>VirtualHost</code> présente la
197 meilleure correspondance avec la paire adresse IP/port, aucune
198 action n'est entreprise et la requête est
199 traitée par le serveur virtuel qui correspond.</p>
203 <h3><a name="namebased" id="namebased">Serveur virtuel par nom</a></h3>
205 <p>Si plusieurs sections <code>VirtualHost</code> présentent la
206 meilleure correspondance avec la paire adresse IP/port, le terme
207 "liste" dans les étapes suivantes fait référence à la liste des
208 serveurs virtuels qui correspondent, selon l'ordre dans lequel ils
209 apparaissent dans le fichier de configuration.</p>
211 <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>,
212 et si la négociation du client SSL inclut l'extension TLS dans le
213 nom d'hôte requis, alors ce nom d'hôte sera utilisé par la suite, tout
214 comme un en-tête <code>Host:</code> aurait été utilisé dans le cas
215 d'une connexion non-SSL. Si ces conditions ne sont pas réunies, le
216 premier serveur virtuel à base de nom dont l'adresse correspond sera
217 utilisé pour les connexions SSL. Ceci est important car c'est le
218 serveur virtuel qui détermine quel certificat le serveur va utiliser
219 pour la connexion.</p>
221 <p>Si la requête contient un en-tête <code>Host:</code>, on
222 recherche dans la liste le premier serveur virtuel dont le
223 <code>ServerName</code> ou le <code>ServerAlias</code> correspond,
224 et c'est celui-ci qui va traiter la requête. Un en-tête
225 <code>Host:</code> peut comporter un numéro de port mais Apache
226 l'ignore systématiquement et utilise toujours le
227 port sur lequel il a effectivement reçu la requête.</p>
229 <p>Le premier serveur virtuel du fichier de configuration qui
230 possède l'adresse spécifiée est prioritaire et intercepte toutes les
231 requêtes à destination d'un nom de serveur inconnu, ou toute requête
232 sans en-tête <code>Host:</code> (comme les requêtes HTTP/1.0).</p>
236 <h3><a name="persistent" id="persistent">Connexions persistantes</a></h3>
238 <p>La <em>recherche par adresse IP</em> décrite ci-avant n'est faite
239 qu'<em>une fois</em> pour chaque session TCP/IP, alors que la
240 <em>recherche par nom</em> est réalisée pour <em>chaque</em> requête au
241 cours d'une connexion persistante (KeepAlive). En d'autres termes,
242 il est possible pour un client de faire des requêtes sur
243 différents serveurs virtuels par nom, au cours d'une unique
244 connexion persistante.</p>
248 <h3><a name="absoluteURI" id="absoluteURI">URI absolu</a></h3>
250 <p>Au cas où l'URI de la requête est absolu, et que son nom de
251 serveur et son port correspondent au serveur principal (ou l'un
252 des serveurs virtuels configurés), <em>et</em> qu'ils correspondent
253 à l'adresse et au port de la requête, alors l'URI est amputé
254 de son préfixe protocole/nom de serveur/port et traité par le
255 serveur correspondant (principal ou virtuel). Si cette correspondance
256 n'existe pas, l'URI reste inchangé et la requête est considérée
257 comme une requête d'un serveur mandataire (proxy).</p>
260 <h3><a name="observations" id="observations">Observations</a></h3>
263 <li>La sélection d'un serveur virtuel en fonction de son nom est
264 un processus qui intervient après la sélection par le serveur du
265 serveur virtuel qui correspond le mieux du point de vue adresse
268 <li>Si vous ne tenez pas compte de l'adresse IP à laquelle le
269 client s'est connecté, indiquez un caractère "*" comme adresse
270 pour tous les serveurs virtuels, et la sélection du serveur
271 virtuel en fonction du nom s'appliquera alors à tous les serveurs
272 virtuels définis.</li>
274 <li>Les vérifications sur <code>ServerName</code> et
275 <code>ServerAlias</code> ne sont jamais
276 réalisées pour les serveurs virtuels par IP.</li>
278 <li>Seul l'ordre des serveurs virtuels par nom
279 pour une adresse donnée a une importance. Le serveur virtuel
280 par nom qui est présent en premier dans la configuration se
281 voit attribué la priorité la plus haute pour les requêtes
282 arrivant sur son jeu d'adresses IP.</li>
284 <li>Le numéro de port contenu dans l'en-tête <code>Host:</code> n'est jamais utilisé
285 pour les tests de correspondances. Apache ne prend en compte
286 que le numéro de port sur lequel le client a envoyé la requête.</li>
288 <li>Si deux serveurs virtuels partagent la même adresse, la
289 sélection se fera implicitement sur le nom. Il s'agit d'une
290 nouvelle fonctionnalité de la version 2.3.11.</li>
292 <li>Le serveur principal ne sert les requêtes que
293 lorsque l'adresse IP et le port demandés par le client ne
294 correspondent à aucun serveur virtuel (y compris un serveur
295 virtuel <code>*</code>). En d'autres termes, le serveur
296 principal n'est utile que pour les combinaisons adresse/port
297 non spécifiées (sauf quand un serveur virtuel <code>_default_</code>
298 correspond au port).</li>
300 <li>Il ne faut jamais employer de noms DNS dans des directives
301 <code>VirtualHost</code>, car cela oblige le serveur a s'appuyer
302 sur le DNS au moment du démarrage. De plus, vous vous exposez
303 à des problèmes de sécurité si vous n'avez pas la maîtrise du
304 DNS pour la totalité de vos domaines. Voir la documentation
305 <a href="../dns-caveats.html">disponible ici</a>, ainsi que
306 les deux points précisés ci-après.</li>
308 <li>Un nom de serveur <code>ServerName</code> devrait toujours
309 être indiqué pour chaque serveur virtuel. Sans cela, une
310 résolution DNS est nécessaire pour chaque serveur virtuel.</li>
314 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
315 <div class="section">
316 <h2><a name="tips" id="tips">Trucs et astuces</a></h2>
318 <p>En plus des points évoqués sur la page des
319 <a href="../dns-caveats.html#tips">problèmes liés au DNS</a>,
320 voici quelques points intéressants :</p>
323 <li>Toujours positionner les définitions relatives au serveur
324 principal avant toute définition <code>VirtualHost</code>.
325 (Ceci améliore grandement la lisibilité de la configuration
326 -- la manière dont la configuration est interprétée après la
327 lecture des fichiers ne met pas en évidence le fait que les
328 définitions positionnées avant et surtout après les serveurs
329 virtuels peuvent impacter le fonctionnement de tous les
330 serveurs virtuels.)</li>
335 <div class="bottomlang">
336 <p><span>Langues Disponibles: </span><a href="../en/vhosts/details.html" hreflang="en" rel="alternate" title="English"> en </a> |
337 <a href="../fr/vhosts/details.html" title="Français"> fr </a> |
338 <a href="../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
339 <a href="../tr/vhosts/details.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
340 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
341 <script type="text/javascript"><!--//--><![CDATA[//><!--
342 var comments_shortname = 'httpd';
343 var comments_identifier = 'http://httpd.apache.org/docs/trunk/vhosts/details.html';
345 if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
346 d.write('<div id="comments_thread"><\/div>');
347 var s = d.createElement('script');
348 s.type = 'text/javascript';
350 s.src = 'https://c.apaste.info/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
351 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
354 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
356 })(window, document);
357 //--><!]]></script></div><div id="footer">
358 <p class="apache">Copyright 2012 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
359 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
360 if (typeof(prettyPrint) !== 'undefined') {