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
|
<?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>Support Apache des serveurs virtuels par nom - 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="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
<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.3</a> > <a href="./">Serveurs virtuels</a></div><div id="page-content"><div id="preamble"><h1>Support Apache des serveurs virtuels par nom</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../de/vhosts/name-based.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
<a href="../en/vhosts/name-based.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/vhosts/name-based.html" title="Français"> fr </a> |
<a href="../ja/vhosts/name-based.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/vhosts/name-based.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="../tr/vhosts/name-based.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
<div class="outofdate">Cette traduction peut être périmée. Verifiez la version
Anglaise pour les changements récents.</div>
<p>Ce document décrit quand et comment utiliser des serveurs
virtuels par nom.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#namevip">Serveurs virtuels par nom vs. par IP</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#using">Utilisation de serveurs virtuels par nom</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#compat">Compatibilité avec les navigateurs anciens</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="ip-based.html">Support Apache des serveurs virtuels par IP</a></li><li><a href="details.html">Détails sur le fonctionnement des serveurs virtuels</a></li><li><a href="mass.html">Configuration dynamique des hébergements virtuels de masse</a></li><li><a href="examples.html">Exemples d'utilisations de VirtualHost</a></li><li><a href="examples.html#serverpath">Utilisation de la directive ServerPath</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="namevip" id="namevip">Serveurs virtuels par nom vs. par IP</a></h2>
<p>Les hébergements virtuels par IP utilisent l'adresse IP
de la connexion afin de déterminer quel serveur virtuel doit
répondre. Par conséquent, vous devez disposer d'adresses IP
différentes pour chaque nom de domaine complet (FQDN) que vous hébergez.
Avec un hébergement
virtuel par nom, le serveur s'appuit sur les informations
transmises par le client dans les en-têtes HTTP de ses requêtes.
La technique présentée ici vous permet de disposer de serveurs
virtuels différents partagés sur une même adresse IP.</p>
<p>L'hébergement virtuel par nom est habituellement plus simple,
car il vous suffit de configurer votre serveur DNS pour que
chaque domaine pointe sur l'adresse IP dont vous disposez, et de
configurer votre serveur Apache HTTP afin qu'il reconnaisse
ces domaines. Il réduit aussi la pénurie en adresses IP. Par
conséquent, vous devriez utiliser l'hébergement virtuel par
nom à moins d'avoir une raison spécifique de préférer
l'hébergement virtuel par IP. Certaines de ces raisons vous
sont exposées ci-après :</p>
<ul>
<li>Certains anciens navigateurs ne sont pas compatibles
avec les serveurs virtuels par nom, car pour fonctionner,
un client doit transmettre un champ d'en-tête HTTP Host.
Cet en-tête est exigé pour HTTP/1.1, et peut être implémenté
sur des navigateurs modernes HTTP/1.0 grâce à une extension.
Si vous devez maintenir des clients obsolètes tout en
utilisant l'hébergement virtuel par nom, il existe une
technique qui est traitée à la fin de ce document.</li>
<li>L'hébergement virtuel par nom ne peut pas être utilisé
avec des serveurs sécurisés SSL à cause de la nature même
du protocole SSL.</li>
<li>Certains systèmes d'exploitation et équipements réseaux
emploient des techniques de gestion de la bande passante
qui ne peuvent pas différencier des domaines autrement que
par des adresses IP séparées.</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="using" id="using">Utilisation de serveurs virtuels par nom</a></h2>
<table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code></li><li><code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code></li><li><code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code></li><li><code class="directive"><a href="../mod/core.html#servername">ServerName</a></code></li><li><code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code></li><li><code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code></li></ul></td></tr></table>
<p>Pour utiliser des serveurs virtuels par nom, vous devez
désigner l'adresse IP (et si possible le port) sur le serveur
devant accepter les requêtes pour des domaines. Cette
configuration utilise la directive
<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>. Dans un
cas normal où n'importe quelle adresse IP peut être utilisée,
vous pouvez ajouter <code>*</code> comme argument de la directive
<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>. Si vous
prévoyez d'utiliser de multiples ports (comme l'emploi de SSL),
vous devriez ajouter le port à cet argument tel que
<code>*:80</code>. Notez que la simple mention d'une adresse
IP dans une directive
<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> ne suffit
pas à faire écouter le serveur sur cette IP. Consultez
<a href="../bind.html">la page sur les liaisons</a> pour plus
de détails. Par ailleurs, chaque adresse IP spécifiée ici doit
être associée avec une interface réseau sur le serveur.</p>
<p>L'étape suivante est la création d'une section
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>
pour chacun des serveurs à créer. L'argument de la directive
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>
doit être le même que celui de la directive
<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>
(c'est-à-dire l'adresse IP ou <code>*</code> pour toutes les
adresses). Dans chaque section
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>,
vous devez définir au minimum une directive
<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> pour désigner
le serveur concerné et une directive
<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> pour préciser
l'emplacement sur le système de fichiers du contenu de ce serveur.</p>
<div class="note"><h3>Le serveur principal disparaît</h3>
<p>Si vous ajoutez des serveurs virtuels à un serveur Web
existant, vous devez également créer une section
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>
redéfinissant ce serveur existant. Les directives
<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> et
<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> incluses
dans ce serveur virtuel doivent être les mêmes que pour
les directives globales
<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> et
<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. Positionnez
ce serveur virtuel en premier dans le fichier de configuration
pour en faire le serveur par défaut.</p>
</div>
<p>Par exemple, supposez que vous hébergez le domaine
<code>www.domain.tld</code> et que vous souhaitez ajouter le
serveur virtuel <code>www.otherdomain.tld</code> qui pointe sur
la même adresse IP. Il vous suffit d'ajouter la configuration
suivante à <code>httpd.conf</code> :</p>
<div class="example"><p><code>
NameVirtualHost *:80<br />
<br />
<VirtualHost *:80><br />
<span class="indent">
ServerName www.domain.tld<br />
ServerAlias domain.tld *.domain.tld<br />
DocumentRoot /www/domain<br />
</span>
</VirtualHost><br />
<br />
<VirtualHost *:80><br />
<span class="indent">ServerName www.otherdomain.tld<br />
DocumentRoot /www/otherdomain<br />
</span>
</VirtualHost><br />
</code></p></div>
<p>Autrement, vous pouvez spécifiez une adresse IP explicite
à la place de <code>*</code> dans les deux directives
<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> et
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>.
Par exemple, cette méthode est utile si vous souhaitez faire
tourner quelques serveurs virtuels par nom sur une même adresse
IP, et d'autres, soit par IP, soit basés sur un autre jeu de
serveurs virtuels par nom sur une autre adresse IP.</p>
<p>Plusieurs serveurs sont accessibles par plus d'un nom. Il
suffit de placer la directive
<code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code> dans une section
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>.
Par exemple, dans la première section
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>
ci-dessus, la directive <code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code>
indique aux utilisateurs les autres noms permis pour accéder au
même site Web :</p>
<div class="example"><p><code>
ServerAlias domain.tld *.domain.tld
</code></p></div>
<p>ainsi, toutes les requêtes portant sur un domaine
<code>domain.tld</code> seront servies par le serveur virtuel
<code>www.domain.tld</code>. Les caractères joker <code>*</code>
et <code>?</code> peuvent être utilisés pour les correspondances.
Bien entendu, vous ne pouvez pas inventer des noms et les placer
dans une directive <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>
ou <code>ServerAlias</code>. Tout d'abord, votre serveur DNS
doit être correctement configuré pour lier ces noms à une
adresse IP associée avec votre serveur.</p>
<p>Finalement, vous pouvez affiner la configuration des serveurs
virtuels en plaçant d'autres directives à l'intérieur des sections
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>.
La plupart des directives peut être placée dans ces sections en
y changeant seulement la configuration du serveur virtuel associé.
Pour déterminer si une directive particulière est permise,
consultez <a href="../mod/directive-dict.html#Context">la page de
contexte</a>. Le jeu de directives configurées dans le contexte
du <em>serveur principal</em> (en dehors de toutes sections
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>)
sera utilisé seulement s'il n'y a pas de configuration contraire
par un serveur virtuel.</p>
<p>Maintenant, lorsqu'une requête arrive, le serveur va d'abord
tester si elle utilise une adresse IP qui correspond à
<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>. Si c'est
le cas, il regardera chaque section
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>
avec l'adresse correspondante et essaiera d'en trouver une où
le nom de domaine requis correspond à
<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> ou
<code>ServerAlias</code>. S'il en trouve une, il utilisera
sa configuration pour le serveur. Si aucun serveur virtuel ne
correspond, alors <em>le premier serveur virtuel listé</em>
dont l'adresse IP correspond sera employé.</p>
<p>En conséquence, le premier serveur virtuel listé est le
serveur virtuel <em>default</em>. La directive
<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> du
<em>serveur principal</em> <strong>ne</strong> sera
<strong>jamais</strong> employée lorsqu'une adresse IP
correspond dans une directive
<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>. Si vous
ne voulez pas avoir de configuration spéciale pour les requêtes
qui ne sont pas attachées à un serveur virtuel en particulier,
mettez cette configuration dans une section
<code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>
que vous placerez en premier dans le fichier de configuration.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="compat" id="compat">Compatibilité avec les navigateurs anciens</a></h2>
<p>Comme mentionné plus tôt, certains clients ne transmettent
pas les données nécessaires pour le bon fonctionnement des
serveurs virtuels. Ces clients recevront toujours les pages
du premier serveur virtuel listé pour cette adresse IP (le
serveur virtuel par nom <cite>primaire</cite>).</p>
<div class="note"><h3>De combien plus anciens ?</h3>
<p>Veuillez noter que quand nous disons plus anciens, nous
disons vraiment plus anciens. Vous seriez malchanceux de rencontrer
de tels navigateurs encore utilisés de nos jours. Toutes les
versions actuelles des navigateurs transmettent leur en-tête
<code>Host</code> comme exigé par les serveurs virtuels par nom.</p>
</div>
<p>Il existe une solution avec la directive
<code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code>, bien que
légèrement complexe :</p>
<p>Exemple de configuration :</p>
<div class="example"><p><code>
NameVirtualHost 111.22.33.44<br />
<br />
<VirtualHost 111.22.33.44><br />
<span class="indent">
ServerName www.domain.tld<br />
ServerPath /domain<br />
DocumentRoot /web/domain<br />
</span>
</VirtualHost><br />
</code></p></div>
<p>Qu'est-ce que cela signifie ? Il signifie qu'une requête
pour tout URI qui commence par "<code>/domain</code>" sera
servie par le serveur virtuel <code>www.domain.tld</code>.
Ainsi, les pages sont accessibles à
<code>http://www.domain.tld/domain/</code> pour tous les
clients, bien que ceux qui transmettent un en-tête
<code>Host:</code> peuvent également y accéder à
<code>http://www.domain.tld/</code>.</p>
<p>Pour rendre cette technique fonctionnelle, mettez un lien
dans votre serveur virtuel primaire vers
<code>http://www.domain.tld/domain/</code>. Ensuite, dans les
pages de ce serveur virtuel, assurez vous ne n'utiliser que
des liens relatifs (<em>par exemple</em>, "<code>file.html</code>"
ou "<code>../icons/image.gif</code>") ou des liens contenant
le préfixe <code>/domain/</code> (<em>par exemple</em>,
"<code>http://www.domain.tld/domain/misc/file.html</code>"
ou "<code>/domain/misc/file.html</code>").</p>
<p>Cela requiert un peu de discipline, mais si vous suivez
cette ligne de conduite, vous serez assuré que vos pages
s'afficheront dans tous les navigateurs, nouveaux et anciens.</p>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../de/vhosts/name-based.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
<a href="../en/vhosts/name-based.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/vhosts/name-based.html" title="Français"> fr </a> |
<a href="../ja/vhosts/name-based.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/vhosts/name-based.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="../tr/vhosts/name-based.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div><div id="footer">
<p class="apache">Copyright 2008 The Apache Software Foundation.<br />Authorisé 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>
|