]> granicus.if.org Git - apache/blob - docs/manual/vhosts/details.html.fr.utf8
Fix xml validation error
[apache] / docs / manual / vhosts / details.html.fr.utf8
1 <?xml version="1.0" encoding="UTF-8"?>
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 <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
10 <title>Détails sur le fonctionnement des serveurs virtuels - Serveur HTTP Apache Version 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <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" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
15 </script>
16
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
18 <body id="manual-page"><div id="page-header">
19 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.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>
20 <p class="apache">Serveur HTTP Apache Version 2.5</p>
21 <img alt="" src="../images/feather.png" /></div>
22 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
23 <div id="path">
24 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Serveurs virtuels</a></div><div id="page-content"><div id="preamble"><h1>Détails sur le fonctionnement des serveurs virtuels</h1>
25 <div class="toplang">
26 <p><span>Langues Disponibles: </span><a href="../en/vhosts/details.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
27 <a href="../fr/vhosts/details.html" title="Français">&nbsp;fr&nbsp;</a> |
28 <a href="../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
29 <a href="../tr/vhosts/details.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
30 </div>
31
32
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>
36
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>
42
43     <p>Si vous voulez entrer dans les détails, vous pouvez revenir vers
44     cette page.</p>
45
46 </div>
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><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>
56 <div class="section">
57 <h2><a name="configparsing" id="configparsing">Fichier de configuration</a><a title="Lien permanent" href="#configparsing" class="permalink">&para;</a></h2>
58
59     <p>Un <em>serveur  principal (main_server)</em> contient toutes
60     les définitions qui apparaissent en dehors des sections
61     <code>&lt;VirtualHost&gt;</code>.</p>
62
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">&lt;VirtualHost&gt;</a></code>.</p>
66
67     <p>Chaque directive <code>VirtualHost</code> comporte une ou
68     plusieurs adresses et des ports optionnels.</p>
69
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>
75
76     <p>L'adresse peut
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>
80
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
85     valeurs de port.</p>
86
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>).
93     </p>
94
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>
98
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>
103
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
109     IP.</p>
110
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>
118
119     <p>Tous les noms spécifiés au sein d'une section
120     <code>VirtualHost</code> sont traités comme un
121     <code>ServerAlias</code> (sans caractères génériques), mais ne sont
122     écrasés par aucune directive <code>ServerAlias</code>.</p>
123
124     <p>Pour chaque serveur virtuel, diverses valeurs sont initialisées
125     par défaut. En particulier&nbsp;:</p>
126
127     <ol>
128       <li>Dans le cas où un serveur virtuel ne contient pas de directives
129       <code class="directive"><a href="../mod/core.html#serveradmin">ServerAdmin</a></code>,
130       <code class="directive"><a href="../mod/core.html#timeout">Timeout</a></code>,
131       <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code>,
132       <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code>,
133       <code class="directive"><a href="../mod/core.html#maxkeepaliverequests">MaxKeepAliveRequests</a></code>,
134       <code class="directive"><a href="../mod/mpm_common.html#receivebuffersize">ReceiveBufferSize</a></code>,
135       ou <code class="directive"><a href="../mod/mpm_common.html#sendbuffersize">SendBufferSize</a></code>,
136       alors la valeur de chacun de ces paramètres est héritée de celle du
137       serveur principal. (C'est à dire, héritée de la valeur finale après
138       lecture de la configuration du serveur principal.)</li>
139
140       <li>Les permissions par défaut sur les répertoires de chaque
141       serveur virtuel sont assemblées avec celles du serveur principal.
142       Elles concernent également toutes les informations de configuration
143       par répertoire pour tous les modules.</li>
144
145       <li>Les configurations par serveur pour chaque module sont assemblées
146       à partir de celles du serveur principal.</li>
147     </ol>
148
149     <p>L'essentiel des valeurs de configuration des serveurs virtuels
150     provient de valeurs par défaut issues du serveur principal.
151     Mais la position dans le fichier de configuration des directives
152     du serveur principal n'a pas d'importance -- l'ensemble de la
153     configuration du serveur principal est lu avant que ces valeurs par
154     défaut soient appliquées aux serveur virtuels. Ainsi, même si la
155     définition d'une valeur apparaît après celle d'un serveur virtuel,
156     cette valeur peut affecter la definition du serveur virtuel.</p>
157
158     <p>Dans le cas où le serveur principal n'a pas de <code>ServerName</code>
159     à ce stade, le nom de la machine sur laquelle tourne le programme
160     <code class="program"><a href="../programs/httpd.html">httpd</a></code> est utilisé à sa place. Nous appellerons
161     <em>jeu d'adresses du serveur principal</em> les adresses IP
162     renvoyées par une résolution DNS sur le <code>ServerName</code>
163     du serveur principal.</p>
164
165     <p>Pour tous les champs <code>ServerName</code> non définis, dans
166     le cas d'une configuration en serveur virtuel par nom, la valeur
167     adoptée par défaut est la première adresse donnée dans la section
168     <code>VirtualHost</code> qui définit le serveur virtuel.</p>
169
170     <p>Si un serveur virtuel contient la valeur magique
171     <code>_default_</code>, il fonctionne sur le même <code>ServerName</code>
172     que le serveur principal.</p>
173
174 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
175 <div class="section">
176 <h2><a name="hostmatching" id="hostmatching">Choix du serveur virtuel</a><a title="Lien permanent" href="#hostmatching" class="permalink">&para;</a></h2>
177
178     <p>À la réception d'une requête, le serveur procède comme suit pour
179     déterminer quel serveur virtuel utiliser&nbsp;:</p>
180
181     <h3><a name="hashtable" id="hashtable">Recherche de l'adresse IP</a></h3>
182
183     <p>Lors d'une première connexion sur une adresse/port, le serveur
184     recherche toutes les directives <code>VirtualHost</code> qui
185     possèdent la même adresse IP/port.</p>
186
187     <p>S'il n'y a aucune correspondance exacte pour cette adresse/port,
188     la recherche s'effectue sur la valeur générique (<code>*</code>).</p>
189
190     <p>Si aucune correspondance n'est enfin trouvée, la requête sera
191     servie par le serveur principal.</p>
192
193     <p>S'il existe des définitions <code>VirtualHost</code> pour
194     l'adresse IP, l'étape suivante consiste à déterminer si nous avons à
195     faire à un serveur virtuel à base de nom ou d'adresse IP.</p>
196
197     
198
199     <h3><a name="ipbased" id="ipbased">Serveur virtuel par IP</a></h3>
200
201     <p>Si une seule section <code>VirtualHost</code> présente la
202     meilleure correspondance avec la paire adresse IP/port, aucune
203     action n'est entreprise et la requête est
204     traitée par le serveur virtuel qui correspond.</p>
205
206     
207
208     <h3><a name="namebased" id="namebased">Serveur virtuel par nom</a></h3>
209
210     <p>Si plusieurs sections <code>VirtualHost</code> présentent la
211     meilleure correspondance avec la paire adresse IP/port, le terme
212     "liste" dans les étapes suivantes fait référence à la liste des
213     serveurs virtuels qui correspondent, selon l'ordre dans lequel ils
214     apparaissent dans le fichier de configuration.</p>
215
216     <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>,
217     et si la négociation du client SSL inclut l'extension TLS dans le
218     nom d'hôte requis, alors ce nom d'hôte sera utilisé par la suite, tout
219     comme un en-tête <code>Host:</code> aurait été utilisé dans le cas
220     d'une connexion non-SSL. Si ces conditions ne sont pas réunies, le
221     premier serveur virtuel à base de nom dont l'adresse correspond sera
222     utilisé pour les connexions SSL. Ceci est important car c'est le
223     serveur virtuel qui détermine quel certificat le serveur va utiliser
224     pour la connexion.</p>
225
226     <p>Si la requête contient un en-tête <code>Host:</code>, on
227     recherche dans la liste le premier serveur virtuel dont le
228     <code>ServerName</code> ou le <code>ServerAlias</code> correspond,
229     et c'est celui-ci qui va traiter la requête. Un en-tête
230     <code>Host:</code> peut comporter un numéro de port mais Apache
231     l'ignore systématiquement et utilise toujours le
232     port sur lequel il a effectivement reçu la requête.</p>
233
234     <p>Le premier serveur virtuel du fichier de configuration qui
235     possède l'adresse spécifiée est prioritaire et intercepte toutes les
236     requêtes à destination d'un nom de serveur inconnu, ou toute requête
237     sans en-tête <code>Host:</code> (comme les requêtes HTTP/1.0).</p>
238
239     
240
241     <h3><a name="persistent" id="persistent">Connexions persistantes</a></h3>
242
243     <p>La <em>recherche par adresse IP</em> décrite ci-avant n'est faite
244     qu'<em>une fois</em> pour chaque session TCP/IP, alors que la
245     <em>recherche par nom</em> est réalisée pour <em>chaque</em> requête au
246     cours d'une connexion persistante (KeepAlive). En d'autres termes,
247     il est possible pour un client de faire des requêtes sur
248     différents serveurs virtuels par nom, au cours d'une unique
249     connexion persistante.</p>
250
251     
252
253     <h3><a name="absoluteURI" id="absoluteURI">URI absolu</a></h3>
254
255     <p>Au cas où l'URI de la requête est absolu, et que son nom de
256     serveur et son port correspondent au serveur principal (ou l'un
257     des serveurs virtuels configurés), <em>et</em> qu'ils correspondent
258     à l'adresse et au port de la requête, alors l'URI est amputé
259     de son préfixe protocole/nom de serveur/port et traité par le
260     serveur correspondant (principal ou virtuel). Si cette correspondance
261     n'existe pas, l'URI reste inchangé et la requête est considérée
262     comme une requête d'un serveur mandataire (proxy).</p>
263
264
265 <h3><a name="observations" id="observations">Observations</a></h3>
266
267     <ul>
268       <li>La sélection d'un serveur virtuel en fonction de son nom est
269       un processus qui intervient après la sélection par le serveur du
270       serveur virtuel qui correspond le mieux du point de vue adresse
271       IP/port.</li>
272
273       <li>Si vous ne tenez pas compte de l'adresse IP à laquelle le
274       client s'est connecté, indiquez un caractère "*" comme adresse
275       pour tous les serveurs virtuels, et la sélection du serveur
276       virtuel en fonction du nom s'appliquera alors à tous les serveurs
277       virtuels définis.</li>
278
279       <li>Les vérifications sur <code>ServerName</code> et
280       <code>ServerAlias</code> ne sont jamais
281       réalisées pour les serveurs virtuels par IP.</li>
282
283       <li>Seul l'ordre des serveurs virtuels par nom
284       pour une adresse donnée a une importance. Le serveur virtuel
285       par nom qui est présent en premier dans la configuration se
286       voit attribué la priorité la plus haute pour les requêtes
287       arrivant sur son jeu d'adresses IP.</li>
288
289       <li>Le numéro de port contenu dans l'en-tête <code>Host:</code> n'est jamais utilisé
290       pour les tests de correspondances. Apache ne prend en compte
291       que le numéro de port sur lequel le client a envoyé la requête.</li>
292
293       <li>Si deux serveurs virtuels partagent la même adresse, la
294       sélection se fera implicitement sur le nom. Il s'agit d'une
295       nouvelle fonctionnalité de la version 2.3.11.</li>
296
297       <li>Le serveur principal ne sert les requêtes que
298       lorsque l'adresse IP et le port demandés par le client ne
299       correspondent à aucun serveur virtuel (y compris un serveur
300       virtuel <code>*</code>). En d'autres termes, le serveur
301       principal n'est utile que pour les combinaisons adresse/port
302       non spécifiées (sauf quand un serveur virtuel <code>_default_</code>
303       correspond au port).</li>
304
305       <li>Il ne faut jamais employer de noms DNS dans des directives
306       <code>VirtualHost</code>, car cela oblige le serveur a s'appuyer
307       sur le DNS au moment du démarrage. De plus, vous vous exposez
308       à des problèmes de sécurité si vous n'avez pas la maîtrise du
309       DNS pour la totalité de vos domaines. Voir la documentation
310       <a href="../dns-caveats.html">disponible ici</a>, ainsi que
311       les deux points précisés ci-après.</li>
312
313       <li>Un nom de serveur <code>ServerName</code> devrait toujours
314       être indiqué pour chaque serveur virtuel. Sans cela, une
315       résolution DNS est nécessaire pour chaque serveur virtuel.</li>
316       </ul>
317       
318
319 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
320 <div class="section">
321 <h2><a name="tips" id="tips">Trucs et astuces</a><a title="Lien permanent" href="#tips" class="permalink">&para;</a></h2>
322
323     <p>En plus des points évoqués sur la page des
324     <a href="../dns-caveats.html#tips">problèmes liés au DNS</a>,
325     voici quelques points intéressants&nbsp;:</p>
326
327     <ul>
328       <li>Toujours positionner les définitions relatives au serveur
329       principal avant toute définition <code>VirtualHost</code>.
330       (Ceci améliore grandement la lisibilité de la configuration
331       -- la manière dont la configuration est interprétée après la
332       lecture des fichiers ne met pas en évidence le fait que les
333       définitions positionnées avant et surtout après les serveurs
334       virtuels peuvent impacter le fonctionnement de tous les
335       serveurs virtuels.)</li>
336
337    </ul>
338
339 </div></div>
340 <div class="bottomlang">
341 <p><span>Langues Disponibles: </span><a href="../en/vhosts/details.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
342 <a href="../fr/vhosts/details.html" title="Français">&nbsp;fr&nbsp;</a> |
343 <a href="../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
344 <a href="../tr/vhosts/details.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
345 </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&amp;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>
346 <script type="text/javascript"><!--//--><![CDATA[//><!--
347 var comments_shortname = 'httpd';
348 var comments_identifier = 'http://httpd.apache.org/docs/trunk/vhosts/details.html';
349 (function(w, d) {
350     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
351         d.write('<div id="comments_thread"><\/div>');
352         var s = d.createElement('script');
353         s.type = 'text/javascript';
354         s.async = true;
355         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
356         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
357     }
358     else {
359         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
360     }
361 })(window, document);
362 //--><!]]></script></div><div id="footer">
363 <p class="apache">Copyright 2018 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
364 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.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[//><!--
365 if (typeof(prettyPrint) !== 'undefined') {
366     prettyPrint();
367 }
368 //--><!]]></script>
369 </body></html>