]> granicus.if.org Git - apache/blob - docs/manual/vhosts/examples.xml.fr
docs: rebuild
[apache] / docs / manual / vhosts / examples.xml.fr
1 <?xml version='1.0' ?>
2 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1746754:1781930 (outdated) -->
5 <!-- French translation by Vincent Deffontaines, Alain B.  -->
6 <!-- reviewed by Lucien Gentis -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <manualpage metafile="examples.xml.meta">
26 <parentdocument href="./">Serveurs virtuels</parentdocument>
27     <title>Exemples d'utilisations de VirtualHost</title>
28
29 <summary>
30
31     <p>Le but de ce document est d'essayer de répondre aux questions 
32     les plus répandues sur la configuration des <a href="index.html">serveurs virtuels</a>. 
33     Les scénarios présentés ici se rencontrent quand plusieurs 
34     serveurs Webs doivent tourner sur une seule et même machine au 
35     moyen de serveurs virtuels <a href="name-based.html">par nom</a> 
36     ou <a href="ip-based.html">par IP</a>.</p>
37
38 </summary>
39
40   <section id="purename"><title>Fonctionnement de plusieurs serveurs 
41   virtuels par nom sur une seule adresse IP.</title>
42
43     <p>Votre serveur possède plusieurs noms d'hôte qui correspondent à
44     une seule adresse IP, ce qui lui permet de répondre différemment si
45     une requête est envoyée à <code>www.example.com</code> ou
46     <code>www.example.org</code>.</p>
47
48     <note><title>Note&nbsp;:</title><p>La configuration de serveurs virtuels 
49     sous Apache ne provoque pas leur apparition magique dans la 
50     configuration du DNS. Il <em>faut</em> que leurs noms soient 
51     définis dans le DNS, et qu'ils y soient résolus sur l'adresse IP 
52     du serveur, faute de quoi personne ne pourra visiter votre site Web. 
53     Il est possible d'ajouter des entrées dans le fichier 
54     <code>hosts</code> pour tests locaux, mais qui ne fonctionneront 
55     que sur la machine possédant ces entrées.</p>
56     </note>
57
58     <highlight language="config">
59 # Apache doit écouter sur le port 80
60 Listen 80
61 &lt;VirtualHost *:80&gt;
62     DocumentRoot "/www/example1"
63     ServerName www.example.com
64   
65     # Autres directives ici
66 &lt;/VirtualHost&gt;
67
68 &lt;VirtualHost *:80&gt;
69     DocumentRoot "/www/example2"
70     ServerName www.example.org
71
72     # Autres directives ici
73 &lt;/VirtualHost&gt;
74     </highlight>
75    
76
77     <p>Les astérisques correspondent à toutes les adresses, si bien que 
78     le serveur principal ne répondra jamais à aucune requête. Comme le
79     serveur virtuel
80     <code>ServerName www.example.com</code> se trouve en premier dans le fichier 
81     de configuration, il a la plus grande priorité et peut être vu 
82     comme serveur <cite>par défaut</cite> ou <cite>primaire</cite>&nbsp;; 
83     ce qui signifie que toute requête reçue ne correspondant à aucune 
84     des directives <directive module="core">ServerName</directive> sera servie par ce premier 
85     <directive type="section" module="core">VirtualHost</directive>.</p>
86
87     <p>La configuration ci-dessus correspond à ce que l'on souhaite pour
88     la plupart des serveurs virtuels à base de nom. Il faudra cependant
89     utiliser une configuration différente si vous souhaitez servir un
90     contenu différent en fonction de l'adresse IP ou du port.</p>
91
92     <note>
93             <title>Note&nbsp;:</title>
94
95             <p>Vous pouvez remplacer <code>*</code> 
96             par une adresse IP du système. Le serveur virtuel concerné
97             ne sera alors sélectionné que pour les requêtes HTTP vers
98             cette adresse IP.</p>
99
100            <p>En général, il est commode d'utiliser <code>*</code> sur 
101            les systèmes dont l'adresse IP n'est pas constante - par 
102            exemple, pour des serveurs dont l'adresse IP est attribuée 
103            dynamiquement par le FAI, et où le DNS est géré au moyen 
104            d'un DNS dynamique quelconque. Comme <code>*</code> signifie 
105            <cite>n'importe quelle adresse</cite>, cette configuration 
106            fonctionne sans devoir être modifiée quand l'adresse IP du 
107            système est modifiée.</p>
108     </note>
109
110     </section>
111
112     <section id="twoips"><title>Serveurs virtuels par nom sur plus 
113     d'une seule adresse IP.</title>
114
115         <note>
116           <title>Note&nbsp;:</title><p>Toutes les techniques présentées ici 
117           peuvent être étendues à un plus grand nombre d'adresses IP.</p>
118     </note>
119
120     <p>Le serveur a deux adresses IP. Sur l'une 
121     (<code>172.20.30.40</code>), le serveur "principal" 
122     <code>server.example.com</code> doit répondre, et sur l'autre 
123     (<code>172.20.30.50</code>), deux serveurs virtuels (ou plus) 
124     répondront.</p>
125
126     <highlight language="config">
127 Listen 80
128
129 # Serveur "principal" sur 172.20.30.40
130 ServerName server.example.com
131 DocumentRoot "/www/mainserver"
132
133 &lt;VirtualHost 172.20.30.50&gt;
134     DocumentRoot "/www/example1"
135     ServerName www.example.com
136     
137     # D'autres directives ici ...
138 &lt;/VirtualHost&gt;
139
140 &lt;VirtualHost 172.20.30.50&gt;
141     DocumentRoot "/www/example2"
142     ServerName www.example.org
143     
144     # D'autres directives ici ...
145 &lt;/VirtualHost&gt;
146     </highlight>
147
148     <p>Toute requête arrivant sur une autre adresse que 
149     <code>172.20.30.50</code> sera servie par le serveur principal. 
150     Les requêtes vers <code>172.20.30.50</code> avec un nom de serveur 
151     inconnu, ou sans en-tête <code>Host:</code>, seront servies par 
152     <code>www.example.com</code>.</p>
153
154     </section>
155
156     <section id="intraextra"><title>Servir le même contenu sur des 
157     adresses IP différentes (telle qu'une adresse interne et une 
158     externe).</title>
159
160     <p>La machine serveur dispose de deux adresses IP 
161     (<code>192.168.1.1</code> et <code>172.20.30.40</code>). Cette 
162     machine est placée à la fois sur le réseau interne (l'Intranet) 
163     et le réseau externe (Internet). Sur Internet, le nom 
164     <code>server.example.com</code> pointe vers l'adresse externe 
165     (<code>172.20.30.40</code>), mais sur le réseau interne, ce même 
166     nom pointe vers l'adresse interne (<code>192.168.1.1</code>).</p>
167
168     <p>Le serveur peut être configuré pour répondre de la même manière 
169     aux requêtes internes et externes, au moyen d'une seule section 
170     <directive type="section" module="core">VirtualHost</directive>.</p>
171
172     <highlight language="config">
173 &lt;VirtualHost 192.168.1.1 172.20.30.40&gt;
174     DocumentRoot "/www/server1"
175     ServerName server.example.com
176     ServerAlias server
177 &lt;/VirtualHost&gt;
178     </highlight>
179
180     <p>Ainsi, les requêtes en provenance de chacun des deux réseaux 
181     seront servies par le même <directive type="section"
182     module="core">VirtualHost</directive>.</p>
183
184     <note>
185           <title>Note&nbsp;:</title><p>Sur le réseau interne, il est possible 
186           d'utiliser le nom raccourci <code>server</code> au lieu du nom 
187           complet <code>server.example.com</code>.</p>
188
189           <p>Notez également que dans l'exemple précédent, vous pouvez 
190           remplacer la liste des adresses IP par des <code>*</code> afin 
191           que le serveur réponde de la même manière sur toutes ses 
192           adresses.</p>
193     </note>
194
195     </section>
196
197     <section id="port"><title>Servir différents sites sur différents 
198     ports.</title>
199
200     <p>Vous disposez de plusieurs domaines pointant sur la même adresse 
201     IP et vous voulez également servir de multiples ports. L'exemple
202     suivant montre que la sélection en fonction du nom intervient après
203     la sélection de la meilleure correspondance du point de vue adresse
204     IP/port.</p>
205
206     <highlight language="config">
207 Listen 80
208 Listen 8080
209
210 &lt;VirtualHost 172.20.30.40:80&gt;
211     ServerName www.example.com
212     DocumentRoot "/www/domain-80"
213 &lt;/VirtualHost&gt;
214
215 &lt;VirtualHost 172.20.30.40:8080&gt;
216     ServerName www.example.com
217     DocumentRoot "/www/domain-8080"
218 &lt;/VirtualHost&gt;
219
220 &lt;VirtualHost 172.20.30.40:80&gt;
221     ServerName www.example.org
222     DocumentRoot "/www/otherdomain-80"
223 &lt;/VirtualHost&gt;
224
225 &lt;VirtualHost 172.20.30.40:8080&gt;
226     ServerName www.example.org
227     DocumentRoot "/www/otherdomain-8080"
228 &lt;/VirtualHost&gt;
229     </highlight>
230
231         </section>
232
233     <section id="ip"><title>Hébergement virtuel basé sur IP</title>
234
235     <p>Le serveur dispose de deux adresses IP (<code>172.20.30.40</code> 
236     et <code>172.20.30.50</code>) correspondant respectivement aux noms 
237     <code>www.example.com</code> et <code>www.example.org</code>.</p>
238
239     <highlight language="config">
240 Listen 80
241
242 &lt;VirtualHost 172.20.30.40&gt;
243     DocumentRoot "/www/example1"
244     ServerName www.example.com
245 &lt;/VirtualHost&gt;
246
247 &lt;VirtualHost 172.20.30.50&gt;
248     DocumentRoot "/www/example2"
249     ServerName www.example.org
250 &lt;/VirtualHost&gt;
251     </highlight>
252
253     <p>Les requêtes provenant d'adresses non spécifiées dans l'une des 
254     directives <code>&lt;VirtualHost&gt;</code> (comme pour 
255     <code>localhost</code> par exemple) seront dirigées vers le serveur 
256     principal, s'il en existe un.</p>
257
258         </section>
259
260     <section id="ipport"><title>Hébergements virtuels mixtes basés sur 
261     les ports et sur les IP</title>
262
263     <p>Le serveur dispose de deux adresses IP (<code>172.20.30.40</code> 
264     et <code>172.20.30.50</code>) correspondant respectivement aux noms 
265     <code>www.example.com</code> et <code>www.example.org</code>. 
266     Pour chacun d'eux, nous voulons un hébergement sur les ports 80 
267     et 8080.</p>
268
269     <highlight language="config">
270 Listen 172.20.30.40:80
271 Listen 172.20.30.40:8080
272 Listen 172.20.30.50:80
273 Listen 172.20.30.50:8080
274
275 &lt;VirtualHost 172.20.30.40:80&gt;
276     DocumentRoot "/www/example1-80"
277     ServerName www.example.com
278 &lt;/VirtualHost&gt;
279
280 &lt;VirtualHost 172.20.30.40:8080&gt;
281     DocumentRoot "/www/example1-8080"
282     ServerName www.example.com
283 &lt;/VirtualHost&gt;
284
285 &lt;VirtualHost 172.20.30.50:80&gt;
286     DocumentRoot "/www/example2-80"
287     ServerName www.example.org
288 &lt;/VirtualHost&gt;
289
290 &lt;VirtualHost 172.20.30.50:8080&gt;
291     DocumentRoot "/www/example2-8080"
292     ServerName www.example.org
293 &lt;/VirtualHost&gt;
294     </highlight>
295
296         </section>
297
298     <section id="mixed"><title>Hébergements virtuels mixtes basé sur 
299     les noms et sur IP</title>
300
301     <p>Toute adresse indiquée comme argument d'une section VirtualHost
302     et n'apparaissant dans aucun autre serveur virtuel, fait de cette
303     section un serveur virtuel sélectionnable uniquement en fonction de
304     son adresse IP.</p>
305
306     <highlight language="config">
307 Listen 80
308 &lt;VirtualHost 172.20.30.40&gt;
309     DocumentRoot "/www/example1"
310     ServerName www.example.com
311 &lt;/VirtualHost&gt;
312
313 &lt;VirtualHost 172.20.30.40&gt;
314     DocumentRoot "/www/example2"
315     ServerName www.example.org
316 &lt;/VirtualHost&gt;
317
318 &lt;VirtualHost 172.20.30.40&gt;
319     DocumentRoot "/www/example3"
320     ServerName www.example.net
321 &lt;/VirtualHost&gt;
322
323 # IP-based
324 &lt;VirtualHost 172.20.30.50&gt;
325     DocumentRoot "/www/example4"
326     ServerName www.example.edu
327 &lt;/VirtualHost&gt;
328
329 &lt;VirtualHost 172.20.30.60&gt;
330     DocumentRoot "/www/example5"
331     ServerName www.example.gov
332 &lt;/VirtualHost&gt;
333     </highlight>
334
335         </section>
336
337     <section id="proxy"><title>Utilisation simultanée de 
338     <code>Virtual_host</code> et de mod_proxy</title>
339
340     <p>L'exemple suivant montre comment une machine peut mandater 
341     un serveur virtuel fonctionnant sur le serveur d'une autre machine. 
342     Dans cet exemple, un serveur virtuel de même nom est configuré sur 
343     une machine à l'adresse <code>192.168.111.2</code>. La directive 
344     <directive module="mod_proxy"
345     name="ProxyPreserveHost">ProxyPreserveHost On</directive> est
346     employée pour permette au nom de domaine d'être préservé lors du 
347     transfert, au cas où plusieurs noms de domaines cohabitent sur 
348     une même machine.</p>
349
350     <highlight language="config">
351 &lt;VirtualHost *:*&gt;
352     ProxyPreserveHost On
353     ProxyPass "/" "http://192.168.111.2/"
354     ProxyPassReverse "/" "http://192.168.111.2/"
355     ServerName hostname.example.com
356 &lt;/VirtualHost&gt;
357     </highlight>
358
359     </section>
360
361     <section id="default"><title>Utilisation de serveurs virtuels 
362     <code>_default_</code></title>
363
364     <section id="defaultallports"><title>Serveurs virtuels 
365     <code>_default_</code> pour tous les ports</title>
366
367     <p>Exemple de capture de <em>toutes</em> les requêtes émanant 
368     d'adresses IP ou de ports non connus, <em>c'est-à-dire</em>, d'un 
369     couple adresse/port non traité par aucun autre serveur virtuel.</p>
370
371     <highlight language="config">
372 &lt;VirtualHost _default_:*&gt;
373     DocumentRoot "/www/default"
374 &lt;/VirtualHost&gt;
375     </highlight>
376
377     <p>L'utilisation d'un tel serveur virtuel avec un joker pour le 
378     port empêche de manière efficace qu'une requête n'atteigne le 
379     serveur principal.</p>
380
381     <p>Un serveur virtuel par défaut ne servira jamais une requête 
382     qui est envoyée vers un couple adresse/port utilisée par un 
383     serveur virtuel par nom. Si la requête contient un en-tête 
384     <code>Host:</code> inconnu, ou si celui-ci est absent, elle 
385     sera toujours servie par le serveur virtuel primaire par nom 
386     (celui correspondant à ce couple adresse/port trouvé en premier 
387     dans le fichier de configuration).</p>
388
389     <p>Vous pouvez utiliser une directive 
390     <directive module="mod_alias">AliasMatch</directive> ou 
391     <directive module="mod_rewrite">RewriteRule</directive> afin de 
392     réécrire une requête pour une unique page d'information (ou pour 
393     un script).</p>
394     </section>
395
396     <section id="defaultdifferentports"><title>Serveurs virtuels 
397     <code>_default_</code> pour des ports différents</title>
398
399     <p>La configuration est similaire à l'exemple précédent, mais 
400     le serveur écoute sur plusieurs ports et un second serveur virtuel 
401     <code>_default_</code> pour le port 80 est ajouté.</p>
402
403     <highlight language="config">
404 &lt;VirtualHost _default_:80&gt;
405     DocumentRoot "/www/default80"
406     # ...
407 &lt;/VirtualHost&gt;
408
409 &lt;VirtualHost _default_:*&gt;
410     DocumentRoot "/www/default"
411     # ...
412 &lt;/VirtualHost&gt;
413     </highlight>
414
415     <p>Le serveur virtuel par défaut défini pour le port 80 (il doit 
416     impérativement être placé avant un autre serveur virtuel par 
417     défaut traitant tous les ports grâce au joker *) capture toutes 
418     les requêtes envoyées sur une adresse IP non spécifiée. Le 
419     serveur principal n'est jamais utilisé pour servir une requête.</p>
420     </section>
421
422     <section id="defaultoneport"><title>Serveurs virtuels 
423     <code>_default_</code> pour un seul port</title>
424
425     <p>Nous voulons créer un serveur virtuel par défaut seulement 
426     pour le port 80.</p>
427
428     <highlight language="config">
429 &lt;VirtualHost _default_:80&gt;
430 DocumentRoot "/www/default"
431 ...
432 &lt;/VirtualHost&gt;
433     </highlight>
434
435     <p>Une requête vers une adresse non spécifiée sur le port 80 
436     sera servie par le serveur virtuel par défaut, et toute autre 
437     requête vers une adresse et un port non spécifiés sera servie 
438     par le serveur principal.</p>
439
440     <p>L'utilisation du caractère générique <code>*</code> dans la
441     déclaration d'un serveur virtuel l'emporte sur
442     <code>_default_</code>.</p>
443     </section>
444
445         </section>
446
447         <section id="migrate"><title>Migration d'un serveur virtuel 
448         par nom en un serveur virtuel par IP</title>
449
450     <p>Le serveur virtuel par nom avec le nom de domaine 
451     <code>www.example.org</code> (de notre <a href="#name">exemple 
452     par nom</a>) devrait obtenir sa propre adresse IP. Pendant la 
453     phase de migration, il est possible d'éviter les problèmes avec 
454     les noms de serveurs et autres serveurs mandataires qui mémorisent 
455     les vielles adresses IP pour les serveurs virtuels par nom.<br />
456     La solution est simple, car il suffit d'ajouter la nouvelle 
457     adresse IP (<code>172.20.30.50</code>) dans la directive 
458     <code>VirtualHost</code>.</p>
459
460     <highlight language="config">
461 Listen 80
462 ServerName www.example.com
463 DocumentRoot "/www/example1"
464
465 &lt;VirtualHost 172.20.30.40 172.20.30.50&gt;
466     DocumentRoot "/www/example2"
467     ServerName www.example.org
468     # ...
469 &lt;/VirtualHost&gt;
470
471 &lt;VirtualHost 172.20.30.40&gt;
472     DocumentRoot "/www/example3"
473     ServerName www.example.net
474     ServerAlias *.example.net
475     # ...
476 &lt;/VirtualHost&gt;
477     </highlight>
478
479     <p>Le serveur virtuel peut maintenant être joint par la nouvelle 
480     adresse (comme un serveur virtuel par IP) et par l'ancienne 
481     adresse (comme un serveur virtuel par nom).</p>
482
483         </section>
484
485     <section id="serverpath"><title>Utilisation de la directive 
486     <code>ServerPath</code></title>
487
488     <p>Dans le cas où vous disposez de deux serveurs virtuels par nom, 
489     le client doit transmettre un en-tête <code>Host:</code> correct 
490     pour déterminer le serveur concerné. Les vieux clients HTTP/1.0 
491     n'envoient pas un tel en-tête et Apache n'a aucun indice pour 
492     connaître le serveur virtuel devant être joint (il sert la 
493     requête à partir d'un serveur virtuel primaire). Dans un soucis 
494     de préserver la compatibilité descendante, il suffit de créer 
495     un serveur virtuel primaire chargé de retourner une page contenant 
496     des liens dont les URLs auront un préfixe identifiant les serveurs 
497     virtuels par nom.</p>
498
499     <highlight language="config">
500 &lt;VirtualHost 172.20.30.40&gt;
501     # serveur virtuel primaire
502     DocumentRoot "/www/subdomain"
503     RewriteEngine On
504     RewriteRule "." "/www/subdomain/index.html"
505     # ...
506 &lt;/VirtualHost&gt;
507
508 &lt;VirtualHost 172.20.30.40&gt;
509 DocumentRoot "/www/subdomain/sub1"
510     ServerName www.sub1.domain.tld
511     ServerPath /sub1/
512     RewriteEngine On
513     RewriteRule "^(/sub1/.*)" "/www/subdomain$1"
514     # ...
515 &lt;/VirtualHost&gt;
516
517 &lt;VirtualHost 172.20.30.40&gt;
518     DocumentRoot "/www/subdomain/sub2"
519     ServerName www.sub2.domain.tld
520     ServerPath /sub2/
521     RewriteEngine On
522     RewriteRule "^(/sub2/.*)" "/www/subdomain$1"
523     # ...
524 &lt;/VirtualHost&gt;
525     </highlight>
526
527     <p>À cause de la directive 
528     <directive module="core">ServerPath</directive>, une requête sur 
529     une URL <code>http://www.sub1.domain.tld/sub1/</code> est 
530     <em>toujours</em> servie par le serveur sub1-vhost.<br />
531     Une requête sur une URL <code>http://www.sub1.domain.tld/</code> n'est 
532     servie par le serveur sub1-vhost que si le client envoie un en-tête 
533     <code>Host:</code> correct. Si aucun en-tête <code>Host:</code> 
534     n'est transmis, le serveur primaire sera utilisé.</p>
535     <p>Notez qu'il y a une singularité&nbsp;: une requête sur 
536     <code>http://www.sub2.domain.tld/sub1/</code> est également servie 
537     par le serveur sub1-vhost si le client n'envoie pas d'en-tête 
538     <code>Host:</code>.</p>
539     <p>Les directives <directive module="mod_rewrite">RewriteRule</directive> 
540     sont employées pour s'assurer que le client qui envoie un en-tête 
541     <code>Host:</code> correct puisse utiliser d'autres variantes d'URLs, 
542     <em>c'est-à-dire</em> avec ou sans préfixe d'URL.</p>
543
544         </section>
545
546 </manualpage>