summaryrefslogtreecommitdiffstats
path: root/docs/manual/vhosts/name-based.xml.fr
blob: 6802c7ddef204a8fe13c112461f6a53cb76f4310 (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
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- English Revision: 151405:151408 (outdated) -->
<!-- French translation by alain B, review by Vincent Deffontaines -->

<!--
 Copyright 2005 The Apache Software Foundation or its licensors, as
 applicable.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="name-based.xml.meta">
<parentdocument href="./">Serveurs virtuels</parentdocument>
<title>Support Apache des serveurs virtuels par nom</title>

<summary>
    <p>Ce document d�crit quand et comment utiliser des serveurs 
    virtuels par nom.</p>
</summary>

<seealso><a href="ip-based.html">Support Apache des serveurs virtuels par IP</a></seealso>
<seealso><a href="details.html">D�tails sur le fonctionnement des serveurs virtuels</a></seealso>
<seealso><a href="mass.html">Configuration dynamique des h�bergements virtuels de masse</a></seealso>
<seealso><a href="examples.html">Exemples d'utilisations de VirtualHost</a></seealso>
<seealso><a href="examples.html#serverpath">Utilisation de la directive ServerPath</a></seealso>

<section id="namevip"><title>Serveurs virtuels par nom vs. par IP</title>

    <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&nbsp;:</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>

</section>

<section id="using"><title>Utilisation de serveurs virtuels par nom</title>

<related>
    <modulelist>
    <module>core</module>
    </modulelist>

    <directivelist>
	<directive module="core">DocumentRoot</directive>
	<directive module="core">NameVirtualHost</directive>
	<directive module="core">ServerAlias</directive>
	<directive module="core">ServerName</directive>
	<directive module="core">ServerPath</directive>
	<directive module="core" type="section">VirtualHost</directive>
    </directivelist>
</related>

    <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 
    <directive module="core">NameVirtualHost</directive>. Dans un 
    cas normal o� n'importe quelle adresse IP peut �tre utilis�e, 
    vous pouvez ajouter <code>*</code> comme argument de la directive 
    <directive module="core">NameVirtualHost</directive>. 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 
    <directive module="core">NameVirtualHost</directive> 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 
    <directive type="section" module="core">VirtualHost</directive> 
    pour chacun des serveurs � cr�er. L'argument de la directive 
    <directive type="section" module="core">VirtualHost</directive> 
    doit �tre le m�me que celui de la directive 
    <directive module="core">NameVirtualHost</directive> 
    (c'est-�-dire l'adresse IP ou <code>*</code> pour toutes les 
    adresses). Dans chaque section 
    <directive type="section" module="core">VirtualHost</directive>, 
    vous devez d�finir au minimum une directive 
    <directive module="core">ServerName</directive> pour d�signer 
    le serveur concern� et une directive 
    <directive module="core">DocumentRoot</directive> pour pr�ciser 
    l'emplacement sur le syst�me de fichiers du contenu de ce serveur.</p>

    <note><title>Le serveur principal dispara�t</title>
        <p>Si vous ajoutez des serveurs virtuels � un serveur Web 
        existant, vous devez �galement cr�er une section 
        <directive type="section" module="core">VirtualHost</directive> 
        red�finissant ce serveur existant. Les directives 
        <directive module="core">ServerName</directive> et 
        <directive module="core">DocumentRoot</directive> incluses 
        dans ce serveur virtuel doivent �tre les m�mes que pour 
        les directives globales 
        <directive module="core">ServerName</directive> et 
        <directive module="core">DocumentRoot</directive>. Positionnez 
        ce serveur virtuel en premier dans le fichier de configuration 
        pour en faire le serveur par d�faut.</p>
    </note>

    <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>&nbsp;:</p>

    <example>
        NameVirtualHost *:80<br />
        <br />
        &lt;VirtualHost *:80&gt;<br />
        <indent>
            ServerName www.domain.tld<br />
            ServerAlias domain.tld *.domain.tld<br />
            DocumentRoot /www/domain<br />
        </indent>
        &lt;/VirtualHost&gt;<br />
        <br />
        &lt;VirtualHost *:80&gt;<br />
        <indent>ServerName www.otherdomain.tld<br />
            DocumentRoot /www/otherdomain<br />
        </indent>
        &lt;/VirtualHost&gt;<br />
    </example>

    <p>Autrement, vous pouvez sp�cifiez une adresse IP explicite 
    � la place de <code>*</code> dans les deux directives 
    <directive module="core" >NameVirtualHost</directive> et 
    <directive type="section" module="core" >VirtualHost</directive>. 
    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 
    <directive module="core">ServerAlias</directive> dans une section 
    <directive type="section" module="core">VirtualHost</directive>. 
    Par exemple, dans la premi�re section 
    <directive type="section" module="core">VirtualHost</directive> 
    ci-dessus, la directive <directive module="core">ServerAlias</directive> 
    indique aux utilisateurs les autres noms permis pour acc�der au 
    m�me site Web&nbsp;:</p>

    <example>
        ServerAlias domain.tld *.domain.tld
    </example>

    <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 <directive module="core">ServerName</directive> 
    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 
    <directive type="section" module="core">VirtualHost</directive>. 
    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 
    <directive type="section" module="core">VirtualHost</directive>) 
    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 � 
    <directive module="core" >NameVirtualHost</directive>. Si c'est 
    le cas, il regardera chaque section 
    <directive type="section" module="core">VirtualHost</directive> 
    avec l'adresse correspondante et essaiera d'en trouver une o� 
    le nom de domaine requis correspond � 
    <directive module="core">ServerName</directive> 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 
    <directive module="core">DocumentRoot</directive> du 
    <em>serveur principal</em> <strong>ne</strong> sera 
    <strong>jamais</strong> employ�e lorsqu'une adresse IP 
    correspond dans une directive 
    <directive module="core">NameVirtualHost</directive>. 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 
    <directive type="section" module="core">VirtualHost</directive> 
    que vous placerez en premier dans le fichier de configuration.</p>

</section>

<section id="compat"><title>Compatibilit� avec les navigateurs anciens</title>

    <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>

    <note><title>De combien plus anciens&nbsp;?</title>
    <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>
    </note>

    <p>Il existe une solution avec la directive 
    <directive module="core">ServerPath</directive>, bien que 
    l�g�rement complexe&nbsp;:</p>

    <p>Exemple de configuration&nbsp;:</p>

    <example>
        NameVirtualHost 111.22.33.44<br />
        <br />
        &lt;VirtualHost 111.22.33.44&gt;<br />
        <indent>
            ServerName www.domain.tld<br />
            ServerPath /domain<br />
            DocumentRoot /web/domain<br />
        </indent>
        &lt;/VirtualHost&gt;<br />
    </example>

    <p>Qu'est-ce que cela signifie&nbsp;? 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>

</section>
</manualpage>