summaryrefslogtreecommitdiffstats
path: root/docs/manual/vhosts/details.html.fr
blob: 1aee3d9d8888cc22d3b827d89e9fe4c52d2a87aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>D�tails sur le fonctionnement des serveurs virtuels - Serveur Apache HTTP</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 href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur Apache HTTP Version 2.3</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<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.3</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>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/vhosts/details.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/vhosts/details.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
<a href="../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/vhosts/details.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</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><a name="configparsing" id="configparsing">Fichier de configuration</a></h2>

    <p>Un <em>serveur  principal (main_server)</em> contient toutes
    les d�finitions qui apparaissent en dehors des sections
    <code>&lt;VirtualHost&gt;</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">&lt;VirtualHost&gt;</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/core.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>Pour chaque serveur virtuel, diverses valeurs sont initialis�es
    par d�faut. En particulier&nbsp;:</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#resourceconfig">ResourceConfig</a></code>,
      <code class="directive"><a href="../mod/core.html#accessconfig">AccessConfig</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/core.html#receivebuffersize">ReceiveBufferSize</a></code>,
      ou <code class="directive"><a href="../mod/core.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><a name="hostmatching" id="hostmatching">Choix du serveur virtuel</a></h2>

    <p>� la r�ception d'une requ�te, le serveur proc�de comme suit pour
    d�terminer quel serveur virtuel utiliser&nbsp;:</p>

    <h3><a name="hashtable" id="hashtable">Recherche de l'adresse IP</a></h3>

    <p>Lors d'une premi�re connexion sur une adresse/port, le serveur
    recherche toutes les directives <code>VirtualHost</code> qui
    poss�dent la m�me adresse IP/port.</p>

    <p>S'il n'y a aucune correspondance exacte pour cette adresse/port,
    la recherche s'effectue sur la valeur g�n�rique (<code>*</code>).</p>

    <p>Si aucune correspondance n'est enfin trouv�e, la requ�te sera
    servie par le serveur principal.</p>

    <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><a name="ipbased" id="ipbased">Serveur virtuel par IP</a></h3>

    <p>Si une seule section <code>VirtualHost</code> pr�sente la
    meilleure correspondance avec la paire adresse IP/port, aucune
    action n'est entreprise et la requ�te est
    trait�e par le serveur virtuel qui correspond.</p>

    

    <h3><a name="namebased" id="namebased">Serveur virtuel par nom</a></h3>

    <p>Si plusieurs sections <code>VirtualHost</code> pr�sentent la
    meilleure correspondance avec la paire adresse IP/port, le terme
    "liste" dans les �tapes suivantes fait r�f�rence � la liste des
    serveurs virtuels qui correspondent, selon l'ordre dans lequel ils
    apparaissent dans le fichier de configuration.</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>Si la requ�te contient un en-t�te <code>Host:</code>, on
    recherche dans la liste le premier serveur virtuel dont le
    <code>ServerName</code> ou le <code>ServerAlias</code> correspond,
    et c'est celui-ci qui va traiter la requ�te. Un en-t�te
    <code>Host:</code> peut comporter un num�ro de port mais Apache
    l'ignore syst�matiquement et utilise toujours le
    port sur lequel il a effectivement re�u la requ�te.</p>

    <p>Le premier serveur virtuel du fichier de configuration qui
    poss�de l'adresse sp�cifi�e est prioritaire et intercepte toutes les
    requ�tes � destination d'un nom de serveur inconnu, ou toute requ�te
    sans en-t�te <code>Host:</code> (comme les requ�tes HTTP/1.0).</p>

    

    <h3><a name="persistent" id="persistent">Connexions persistantes</a></h3>

    <p>La <em>recherche par adresse IP</em> d�crite ci-avant n'est faite
    qu'<em>une fois</em> pour chaque session TCP/IP, alors que la
    <em>recherche par nom</em> est r�alis�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 sur
    diff�rents serveurs virtuels par nom, au cours d'une unique
    connexion persistante.</p>

    

    <h3><a name="absoluteURI" id="absoluteURI">URI absolu</a></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><a name="observations" id="observations">Observations</a></h3>

    <ul>
      <li>La s�lection d'un serveur virtuel en fonction de son nom est
      un processus qui intervient apr�s la s�lection par le serveur du
      serveur virtuel qui correspond le mieux du point de vue adresse
      IP/port.</li>

      <li>Si vous ne tenez pas compte de l'adresse IP � laquelle le
      client s'est connect�, indiquez un caract�re "*" 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.</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><a name="tips" id="tips">Trucs et astuces</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&nbsp;:</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">&nbsp;en&nbsp;</a> |
<a href="../fr/vhosts/details.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
<a href="../ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/vhosts/details.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2011 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
</body></html>