summaryrefslogtreecommitdiff
path: root/docs/manual/vhosts/details.html.fr
blob: 7b9753ff43d8b65ce9d1aa0eed6b0dda920e84ae (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
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
<?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.2</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.2</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>Le code gérant les serveurs virtuels a été réécrit à partir de
    zéro dans <strong>Apache 1.3</strong>. Ce document vise à expliquer
    dans le détail comment Apache procède lors du choix de l'utilisation
    d'un serveur virtuel en fonction d'une requête reçue. L'apparition
    de la directive  <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>
    a rendu beaucoup plus facile et plus sûre la configuration des
    serveurs virtuels par rapport aux versions précédant la 1.3.</p>

    <p>Si vous voulez juste <cite>que ça marche</cite> sans en
    comprendre le fonctionnement, voici <a href="examples.html">quelques
    exemples</a>.</p>

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#configparsing">Interprétation des fichiers
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></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">Interprétation des fichiers
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>. 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>Les directives
    <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> et
    <code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code>
    peuvent être placées n'importe où dans le cadre de définition d'un
    serveur. Cependant, chaque fois que l'une d'elles est lue, elle écrase
    ses instances précédentes (dans le contexte du même serveur).</p>

    <p>Le serveur principal n'a pas de valeur par
    défaut pour <code>ServerPath</code> ni pour <code>ServerAlias</code>.
    La valeur par défaut de <code>ServerName</code> est déduite à partir
    de l'adresses IP du serveur.</p>

	<p>Les numéros de port spécifiés par la directive
	<code>VirtualHost</code> n'ont rien à voir avec les ports sur
	lesquels Apache va se mettre en écoute. Ils permettent seulement
	de déterminer quel <code>VirtualHost</code> devra être
	sélectionné pour traiter la requête.</p>

    <p>Chaque adresse incluse dans une directive <code>VirtualHost</code>
    peut disposer d'un port optionnel. Si le port n'est pas précisé, il
    pourra prendre n'importe quelle valeur. Le port particulier
    <code>*</code> représente un joker qui correspond à tous les ports.
    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>À moins qu'une directive
    <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> ne soit utilisée
    pour la paire adresse IP exacte/port dans la directive
    <code>VirtualHost</code>, Apache sélectionne le serveur virtuel qui
    correspond le mieux en se basant sur l'adresse IP (ou une adresse
    quelconque) et le numéro de port. Si plusieurs serveurs virtuels
    correspondent sans pouvoir être départagés, c'est le premier qui
    apparaît dans le fichier de configuration qui sera sélectionné.</p>

    <p>Si vous souhaitez qu'Apache <em>affine</em> ses critères de
    sélection en faisant entrer en jeu l'en-tête HTTP <code>Host</code>
    fourni par le client, la directive <code>NameVirtualHost</code> <em>doit</em>
    apparaître avec la paire adresse IP exacte (ou adresse
    quelconque)/port utilisée dans le jeu de directives
    <code>VirtualHost</code> correspondant.</p>

    <p>La sélection du serveur virtuel en fonction du nom n'intervient
    qu'après la sélection d'un serveur virtuel à base d'adresse IP
    unique, et ne prend en compte que l'ensemble des serveurs virtuels
    qui possèdent la même paire adresse IP/port.</p>

    <p>On peut utiliser des nom d'hôtes à la place d'adresses IP dans la
    définition des serveurs virtuels, mais ils seront résolus en
    adresses IP au démarrage du serveur et ceci n'est pas recommandé.</p>


    <p>On peut utiliser plusieurs directives <code>NameVirtualHost</code>
    pour un groupe de directives <code>VirtualHost</code>, mais seule
    une directive <code>NameVirtualHost</code> doit être utilisée pour
    chaque couple IP:port donné.</p>

    <p>L'ordre d'apparition des directives <code>NameVirtualHost</code>
    et <code>VirtualHost</code> est sans importance, ce qui fait que
    les deux exemples suivants ont des effets identiques (seul l'ordre
    des directives <code>VirtualHost</code> pour <em>un</em> jeu
    d'adresses est important, voir ci-dessous)&nbsp;:</p>

<table><tr>
<td><div class="example"><p><code>
  NameVirtualHost 111.22.33.44<br />
  &lt;VirtualHost 111.22.33.44&gt;<br />
  # serveur A<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.44&gt;<br />
  # serveur B<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  <br />
  NameVirtualHost 111.22.33.55<br />
  &lt;VirtualHost 111.22.33.55&gt;<br />
  # serveur C<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.55&gt;<br />
  # serveur D<br />
  ...<br />
  &lt;/VirtualHost&gt;
</code></p></div></td>
<td><div class="example"><p><code>
  &lt;VirtualHost 111.22.33.44&gt;<br />
  # serveur A<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.55&gt;<br />
  # serveur C<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.44&gt;<br />
  # serveur B<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.55&gt;<br />
  # serveur D<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  <br />
  NameVirtualHost 111.22.33.44<br />
  NameVirtualHost 111.22.33.55<br />
  <br />
</code></p></div></td>
</tr></table>


    <p>(Il est conseillé d'adopter le choix de gauche pour faciliter
    la lisibilité des fichiers de configuration.)</p>
    
    <p>Pendant la phase d'initialisation, une liste de chaque adresse
    IP est générée et introduite dans une table de 'hash'. Si une
    adresse IP est utilisée dans une directive <code>NameVirtualHost</code>,
    cette liste contient les noms des serveurs virtuels pour cette
    adresse. Si aucun serveur virtuel n'est défini pour cette adresse,
    la directive <code>NameVirtualHost</code> est ignorée et un message
    est envoyé au journal d'erreurs. Quand un serveur virtuel par IP
    est utilisé, la table de 'hash' reste vide.</p>

    <p>La fonction de 'hash' étant rapide, le temps d'exécution d'un
    'hash' sur une adresse IP lors d'une requête est minimale et
    quasiment imperceptible. De plus, la table est optimisée pour les
    adresses IP dont le dernier octet est le seul à changer.</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#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">Vérification dans la table de hash</a></h3>

    <p>Après que le client se soit connecté, l'adresse
    IP à laquelle le client s'est connecté est recherchée dans la
    table de hash IP interne.</p>

    <p>Si la résolution de l'adresse IP n'aboutit pas (adresse IP non
    trouvée), la requête est servie par le serveur virtuel
    <code>_default_</code> s'il est défini pour le port correspondant
    à la requête. Sinon, elle est servie par le serveur principal.</p>

    <p>Si l'adresse IP n'est pas trouvée dans la table de hash, la
    recherche du numéro de port peut aussi se terminer par une
    correspondance à un <code>NameVirtualHost *</code> qui est géré
    ensuite comme les autres serveurs virtuels par noms.</p>

    <p>Si une liste est bien trouvée dans la table pour l'adresse
    IP recherchée, l'étape suivante est de déterminer s'il s'agit
    d'un serveur virtuel par nom ou par IP.</p>

    

    <h3><a name="ipbased" id="ipbased">Serveur virtuel par IP</a></h3>

    <p>Si l'entrée trouvée dispose d'une liste de noms vide, c'est
    qu'il s'agit d'un serveur virtuel par IP, et aucun autre choix
    n'est plus à faire&nbsp;; la requête est servie par ce serveur virtuel.</p>

    

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

    <p>Si l'entrée trouvée correspond à un serveur virtuel par nom,
    la liste de noms contient au moins une structure de serveurs
    virtuels. Les serveurs virtuels se présentent dans cette liste
    dans le même ordre que la lecture des directives <code>VirtualHost</code>
    dans le fichier de configuration.</p>

    <p>Le premier serveur virtuel de cette liste (donc, le premier
    serveur virtuel du fichier de configuration
    attribué à l'adresse IP spécifiée)
    se voit attribuer la plus grande priorité, ce
    qui signifie que c'est lui qui traite les requêtes présentant un
    nom de serveur invalide ou ne présentant pas de champ
    <code>Host:</code> dans l'en-tête.</p>

    <p>Si un champ <code>Host:</code> est transmis dans l'en-tête de
    la requête, son occurrence est recherchée dans la liste et le
    premier serveur virtuel qui présente un <code>ServerName</code>
    ou un <code>ServerAlias</code> correspondant est choisi pour
    servir la requête. Il est possible que le champ <code>Host:</code>
    contienne un numéro de port, mais Apache utilise toujours le
    port sur lequel il a effectivement reçu la requête.</p>

    <p>Dans le cas où le client a envoyé une requête en HTTP/1.0 sans
    champ d'en-tête <code>Host:</code>, il est impossible de
    déterminer le serveur auquel le client veut se connecter&nbsp;; l'URI
    de la requête est recherché dans tous les <code>ServerPath</code>
    existants. Le premier chemin trouvé est utilisé et la requête est
    servie par le serveur virtuel correspondant.</p>

    <p>Si aucun serveur virtuel n'est trouvé, la requête est servie
    par le premier serveur virtuel qui écoute sur le port demandé et
    qui est sur la liste associée à l'adresse IP vers laquelle la
    requête a été envoyée (comme déjà précisé ci-avant).</p>

    

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

    <p>La recherche par adresse IP décrite ci-avant n'est faite
    qu'<em>une fois</em> pour chaque session TCP/IP, alors que la
    recherche par nom 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>Les serveurs virtuels par nom et par IP n'interfèrent
      jamais entre eux. Les serveurs virtuels par IP ne sont joignables
      qu'au travers de leur(s) adresse(s) IP propre(s), et en aucun
      cas par une autre adresse. Les serveurs virtuels par nom
      ne sont accessibles que par leur(s) adresse(s) IP qui ne peuvent
      être définies qu'au moyen de la directive
      <code>NameVirtualHost</code>.</li>

      <li>Les vérifications sur <code>ServerAlias</code> et
      <code>ServerPath</code> ne sont jamais réalisées pour les
      serveurs virtuels par IP.</li>

      <li>L'ordre dans lequel sont agencés dans le fichier de
      configuration le serveur virtuel <code>_default_</code>, les
      serveurs virtuels par nom et par IP, et la directive
      <code>NameVirtualHost</code> est sans incidence sur le
      fonctionnement. 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 présenté
      dans le champ d'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 une directive <code>ServerPath</code> existe, et se
      trouve être préfixe d'une autre directive <code>ServerPath</code>
      qui apparaît plus loin dans la configuration, la première
      sera toujours utilisée et la deuxième jamais. (Ceci ne se
      produit que dans le cas où aucun champ <code>Host:</code>
      n'a été présenté par le client pour distinguer les deux.)</li>

      <li>Dans le cas où deux serveurs virtuels par IP ont une
      adresse en commun, le serveur virtuel qui apparaît en premier
      dans la configuration est toujours choisi. Ce genre de chose
      peut arriver par inadvertance. Le serveur envoie une alerte
      dans le journal d'erreurs si ce cas se présente.</li>

      <li>Le serveur virtuel <code>_default_</code> ne sert la requête
      que si aucun autre serveur virtuel travaillant sur l'adresse
      IP <em>et</em> le port demandés n'est trouvé. La requête n'est
      traitée que si le numéro de port qui a reçu la requête est
      associé au serveur virtuel <code>_default_</code> (qui par
      défaut, correspond à <code>Listen</code>). Un port joker peut
      être spécifié (<em>comme dans</em> <code>_default_:*</code>)
      pour récupérer les requêtes sur tous les ports ouverts. Ceci
      est également applicable aux serveurs virtuels
      <code>NameVirtualHost *</code>. Notez que ceci n'est qu'une
      extension du principe de "meilleure correspondance", au même titre
      qu'une correspondance spécifique et exacte est préférée à une
      valeur quelconque.</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>_default_</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>Ni les serveurs virtuels <code>_default_</code>, ni le
      serveur principal ne sont utilisés pour traiter une requête
      avec un champ d'en-tête <code>Host:</code> inconnu ou manquant
      lorsque l'adresse (et le port) de connexion correspondent à
      des serveurs virtuels par nom, par exemple, dans une directive
      <code>NameVirtualHost</code>.</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>

      <li>Toujours regrouper les définitions <code>NameVirtualHost</code>
      et <code>VirtualHost</code> correspondantes
      dans la configuration pour une meilleure lisibilité.</li>

      <li>Éviter les <code>ServerPaths</code> qui sont préfixes
      d'autres <code>ServerPaths</code>. Si cela ne peut être évité,
      veillez à ce que le serveur virtuel contenant le préfixe le plus
      long (donc le plus précis) apparaisse dans le fichier de
      configuration avant le plus court. (<em>par exemple</em>,
      "ServerPath /abc" est à spécifier après  "ServerPath /abc/def").</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 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>
<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>