1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
4        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5              This file is generated from xml source: DO NOT EDIT
6        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7      -->
8<title>H�bergement virtuel de masse configur� dynamiquement - Serveur Apache HTTP</title>
9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
12<script src="/style/scripts/prettify.min.js" type="text/javascript">
13</script>
14
15<link href="/images/favicon.ico" rel="shortcut icon" /></head>
16<body id="manual-page"><div id="page-header">
17<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p>
18<p class="apache">Serveur Apache HTTP Version 2.4</p>
19<img alt="" src="/images/feather.gif" /></div>
20<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
21<div id="path">
22<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.4</a> &gt; <a href="./">H�bergement virtuel</a></div><div id="page-content"><div id="preamble"><h1>H�bergement virtuel de masse configur� dynamiquement</h1>
23<div class="toplang">
24<p><span>Langues Disponibles: </span><a href="/en/vhosts/mass.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
25<a href="/fr/vhosts/mass.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
26<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
27<a href="/tr/vhosts/mass.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
28</div>
29
30
31    <p>Ce document propose une m�thode performante pour servir un nombre
32    quelconque d'h�tes virtuels avec le serveur HTTP Apache. Un <a href="/rewrite/vhosts.html">document s�par�</a> d�crit comment
33    utiliser <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> pour g�rer l'h�bergement
34    virtuel de masse dynamique.
35    </p>
36
37</div>
38<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#motivation">A qui ce document est-il destin� ?</a></li>
39<li><img alt="" src="/images/down.gif" /> <a href="#overview">Vue d'ensemble</a></li>
40<li><img alt="" src="/images/down.gif" /> <a href="#simple">H�bergement virtuel
41dynamique avec mod_vhost_alias</a></li>
42<li><img alt="" src="/images/down.gif" /> <a href="#homepages">Syst�me de serveurs virtuels dynamiques
43simplifi�</a></li>
44<li><img alt="" src="/images/down.gif" /> <a href="#combinations">Utiliser plusieurs syst�mes
45d'h�bergement virtuel sur le m�me serveur</a></li>
46<li><img alt="" src="/images/down.gif" /> <a href="#ipbased">Pour un h�bergement virtuel par IP plus
47efficace</a></li>
48<li><img alt="" src="/images/down.gif" /> <a href="#rewrite">H�bergement virtuel de masse avec
49mod_rewrite</a></li>
50</ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
51<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
52<div class="section">
53<h2><a name="motivation" id="motivation">A qui ce document est-il destin� ?</a></h2>
54
55    <p>Les techniques d�crites ici vous concernent si votre
56    <code>httpd.conf</code> contient de nombreuses sections
57    <code>&lt;VirtualHost&gt;</code> tr�s semblables,
58    dans le style :</p>
59
60<pre class="prettyprint lang-config">&lt;VirtualHost 111.22.33.44&gt;
61    ServerName                 customer-1.example.com
62    DocumentRoot        /www/hosts/customer-1.example.com/docs
63    ScriptAlias  /cgi-bin/  /www/hosts/customer-1.example.com/cgi-bin
64&lt;/VirtualHost&gt;
65
66&lt;VirtualHost 111.22.33.44&gt;
67    ServerName                 customer-2.example.com
68    DocumentRoot        /www/hosts/customer-2.example.com/docs
69    ScriptAlias  /cgi-bin/  /www/hosts/customer-2.example.com/cgi-bin
70&lt;/VirtualHost&gt;
71
72&lt;VirtualHost 111.22.33.44&gt;
73    ServerName                 customer-N.example.com
74    DocumentRoot        /www/hosts/customer-N.example.com/docs
75    ScriptAlias  /cgi-bin/  /www/hosts/customer-N.example.com/cgi-bin
76&lt;/VirtualHost&gt;</pre>
77
78
79    <p>Nous voulons remplacer toutes les configurations
80    <code>&lt;VirtualHost&gt;</code> par un m�canisme qui les g�n�re
81    dynamiquement. Ceci pr�sente certains avantages :</p>
82
83    <ol>
84      <li>Votre fichier de configuration est plus petit, ainsi Apache
85      d�marre plus rapidement et consomme moins de m�moire. Et ce qui
86      est peut-�tre le plus important, le fichier de configuration plus
87      petit est plus facile � maintenir, et le risque d'erreurs en est
88      diminu� d'autant.
89      </li>
90
91      <li>Pour ajouter des serveurs virtuels, il suffit de cr�er les
92      r�pertoires appropri�s dans le syst�me de fichiers et les entr�es
93      dans le DNS - il n'est plus n�cessaire de reconfigurer ou de
94      red�marrer Apache.</li>
95    </ol>
96
97    <p>Le principal d�savantage r�side dans le fait que vous ne pouvez
98    pas d�finir un fichier journal diff�rent pour chaque serveur
99    virtuel. De toute fa�on, ce serait une mauvaise id�e si vous avez de
100    nombreux serveurs virtuels, car cela n�cessiterait un <a href="fd-limits.html">nombre important de descripteurs de
101    fichier</a>. Il est pr�f�rable de rediriger <a href="/logs.html#piped">les journaux via un pipe ou
102    une file fifo</a> vers un
103    programme, et faire en sorte que ce dernier �clate les journaux
104    en un journal par serveur virtuel. L'utilitaire <a href="/programs/other.html#split-logfile">split-logfile</a>
105    constitue un exemple de ce traitement.</p>
106
107</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
108<div class="section">
109<h2><a name="overview" id="overview">Vue d'ensemble</a></h2>
110
111    <p>Un serveur virtuel peut �tre d�fini par deux informations : son
112    adresse IP, et le contenu de l'en-t�te <code>Host:</code> de la
113    requ�te HTTP. La technique d'h�bergement virtuel dynamique de masse
114    utilis�e ici consiste � ins�rer automatiquement ces informations
115    dans le chemin du fichier � utiliser pour r�pondre � la requ�te. On
116    peut y parvenir assez facilement en utilisant
117    <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code> avec Apache httpd, mais on peut aussi
118    <a href="/rewrite/vhosts.html">utiliser mod_rewrite</a>. </p>
119    <p>Par d�faut, ces deux modules
120    sont d�sactiv�s ; vous devez activer l'un d'eux lors de la
121    compilation et de la configuration d'Apache httpd si vous voulez utiliser
122    cette technique.</p>
123
124    <p>Certains param�tres doivent �tre extraits de la requ�te pour que le serveur
125    dynamique se pr�sente comme un serveur dynamique normal. Le plus
126    important est le nom du serveur, que le serveur utilise pour g�n�rer des
127    URLs d'auto-r�f�rencement, etc... Il est d�fini via la directive
128    <code>ServerName</code>, et les CGIs peuvent s'y r�f�rer via la
129    variable d'environnement <code>SERVER_NAME</code>. Sa v�ritable
130    valeur utilis�e � l'ex�cution est contr�l�e par la d�finition de la
131    directive
132    <code class="directive"><a href="/mod/core.html#usecanonicalname">UseCanonicalName</a></code>. Avec
133    <code>UseCanonicalName Off</code>, le nom du serveur correspond au
134    contenu de l'en-t�te <code>Host:</code> de la requ�te. Avec
135    <code>UseCanonicalName DNS</code>, il est extrait d'une recherche
136    DNS inverse sur l'adresse IP du serveur virtuel. La premi�re
137    configuration est utilis�e pour l'h�bergement virtuel dynamique par
138    nom, et la deuxi�me pour l'h�bergement virtuel dynamique par IP. Si
139    httpd ne peut pas d�terminer le nom du serveur, soit parce qu'il
140    n'y a pas d'en-t�te <code>Host:</code>, soit parce que la recherche
141    DNS a �chou�, il prend en compte la valeur d�finie par la directive
142    <code>ServerName</code>.</p>
143
144    <p>L'autre param�tre � extraire est la racine des documents (d�finie
145    via la directive <code>DocumentRoot</code> et disponible pour les
146    scripts CGI via la variable d'environnement <code>DOCUMENT_ROOT</code>).
147    Dans une configuration classique, il est utilis� par le module core
148    pour faire correspondre les URIs aux noms de fichiers, mais lorsque
149    la configuration du serveur comporte des serveurs virtuels, ce
150    traitement doit �tre pris en charge par un autre module (soit
151    <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code>, soit <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>), qui
152    utilise un m�thode de correspondance diff�rente. Aucun de ces
153    modules ne se chargeant de d�finir la variable d'environnement
154    <code>DOCUMENT_ROOT</code>, si des CGIs ou des documents SSI
155    doivent en faire usage, ils obtiendront une valeur erron�e.</p>
156
157</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
158<div class="section">
159<h2><a name="simple" id="simple">H�bergement virtuel
160dynamique avec mod_vhost_alias</a></h2>
161
162    <p>Cet extrait de fichier <code>httpd.conf</code> impl�mente
163    l'h�bergement virtuel d�crit dans la section <a href="#motivation">� qui ce document est-il destin� ?</a> ci-dessus
164    en utilisant <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code>.</p>
165
166<pre class="prettyprint lang-config"># extrait le nom du serveur de l'en-t�te Host:
167UseCanonicalName Off
168
169# ce format de journal peut �tre �clat� en journaux par serveur virtuel
170# � l'aide du premier champ via l'utilitaire split-logfile
171LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
172CustomLog logs/access_log vcommon
173
174# inclut le nom du serveur dans les noms de fichiers ressources
175# n�cessaires aux traitements des requ�tes
176VirtualDocumentRoot /www/hosts/%0/docs
177VirtualScriptAlias  /www/hosts/%0/cgi-bin</pre>
178
179
180    <p>Pour changer cette configuration en solution de serveur virtuel
181    par IP, il suffit de remplacer <code>UseCanonicalName
182    Off</code> par <code>UseCanonicalName DNS</code>. Le nom du serveur
183    ins�r� dans le nom de fichier sera alors d�duit de l'adresse IP du
184    serveur virtuel. La variable <code>%0</code> fait r�f�rence au nom
185    de serveur de la requ�te, tel qu'il est indiqu� dans l'en-t�te
186    <code>Host:</code>.</p>
187
188    <p>Voir la documentation du module <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code>
189    pour d'avantages d'exemples d'utilisation.</p>
190
191</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
192<div class="section">
193<h2><a name="homepages" id="homepages">Syst�me de serveurs virtuels dynamiques
194simplifi�</a></h2>
195
196    <p>Il s'agit d'une adaptation du syst�me ci-dessus, ajust� pour un
197    serveur d'h�bergement web de FAI. Gr�ce � la variable
198    <code>%2</code>, on peut extraire des sous-cha�nes de caract�res du
199    nom du serveur pour les utiliser dans le nom de fichier afin, par
200    exemple, de d�finir <code>/home/user/www</code> comme emplacement des
201    documents pour <code>www.user.example.com</code>. Un seul r�pertoire
202    <code>cgi-bin</code> suffit pour l'ensemble des
203    serveurs virtuels.</p>
204
205<pre class="prettyprint lang-config">UseCanonicalName Off
206
207LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
208CustomLog logs/access_log vcommon
209
210# insertion d'une partie du nom du serveur dans les noms de fichiers
211VirtualDocumentRoot /home/%2/www
212
213# r�pertoire cgi-bin unique
214ScriptAlias  /cgi-bin/  /www/std-cgi/</pre>
215
216
217    <p>Vous trouverez des exemples plus �labor�s d'utilisation de la
218    directive <code>VirtualDocumentRoot</code> dans la documentation du
219    module <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code>.</p>
220
221</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
222<div class="section">
223<h2><a name="combinations" id="combinations">Utiliser plusieurs syst�mes
224d'h�bergement virtuel sur le m�me serveur</a></h2>
225
226    <p>Moyennant une configuration un peu plus compliqu�e, vous pouvez
227    contr�ler la port�e des diff�rentes configurations d'h�bergement
228    virtuel � l'aide des directives <code>&lt;VirtualHost&gt;</code>
229    normales de httpd. Par exemple, on peut associer une adresse IP pour
230    les pages d'accueil des clients en g�n�ral, et une autre pour les
231    clients commerciaux avec la configuration suivante. Cette
232    configuration peut �tre combin�e avec les sections
233    <code>&lt;VirtualHost&gt;</code> conventionnelles, comme indiqu�
234    plus loin.</p>
235
236<pre class="prettyprint lang-config">UseCanonicalName Off
237
238LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
239
240&lt;Directory /www/commercial&gt;
241    Options FollowSymLinks
242    AllowOverride All
243&lt;/Directory&gt;
244
245&lt;Directory /www/homepages&gt;
246    Options FollowSymLinks
247    AllowOverride None
248&lt;/Directory&gt;
249
250&lt;VirtualHost 111.22.33.44&gt;
251    ServerName www.commercial.example.com
252    
253    CustomLog logs/access_log.commercial vcommon
254    
255    VirtualDocumentRoot /www/commercial/%0/docs
256    VirtualScriptAlias  /www/commercial/%0/cgi-bin
257&lt;/VirtualHost&gt;
258
259&lt;VirtualHost 111.22.33.45&gt;
260    ServerName www.homepages.example.com
261    
262    CustomLog logs/access_log.homepages vcommon
263    
264    VirtualDocumentRoot /www/homepages/%0/docs
265    ScriptAlias         /cgi-bin/ /www/std-cgi/
266&lt;/VirtualHost&gt;</pre>
267
268
269<div class="note">
270	<h3>Note</h3>
271	<p>Si le premier bloc VirtualHost ne comporte <em>pas</em> de
272	directive <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code>, c'est
273	le nom issu d'une recherche DNS inverse � partir de l'adresse IP
274	du serveur virtuel qui sera utilis�. Si ce nom ne correspond pas
275	� celui que vous voulez utiliser, vous pouvez ajouter une entr�e
276	de remplacement (par exemple <code>ServerName
277	none.example.com</code>) pour �viter ce comportement.</p>
278</div>
279
280</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
281<div class="section">
282<h2><a name="ipbased" id="ipbased">Pour un h�bergement virtuel par IP plus
283efficace</a></h2>
284
285    <p>Les changements de configuration sugg�r�s pour transformer <a href="#simple">le premier exemple</a> en h�bergement virtuel par IP
286    conduisent � une configuration peu efficace. Chaque requ�te
287    n�cessite une nouvelle recherche DNS. Pour �viter cette surcharge de
288    travail, le syst�me de fichiers peut �tre organis� pour correspondre
289    aux adresses IP, plut�t qu'aux noms de serveurs, supprimant par
290    la-m�me la n�cessit� d'une recherche DNS. La journalisation doit
291    aussi �tre adapt�e pour fonctionner sur un tel syst�me.</p>
292
293<pre class="prettyprint lang-config"># obtention du nom du serveur par recherche DNS inverse
294# sur l'adresse IP
295UseCanonicalName DNS
296
297# insertion de l'adresse IP dans les journaux afin de pouvoir les
298# �clater
299LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon
300CustomLog logs/access_log vcommon
301
302# insertion de l'adresse IP dans les noms de fichiers
303VirtualDocumentRootIP /www/hosts/%0/docs
304VirtualScriptAliasIP  /www/hosts/%0/cgi-bin</pre>
305
306
307</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
308<div class="section">
309<h2><a name="rewrite" id="rewrite">H�bergement virtuel de masse avec
310mod_rewrite</a></h2>
311
312<p>
313L'h�bergement virtuel de masse peut aussi �tre effectu� en utilisant
314<code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>, soit � l'aide de simples directives <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>, soit en utilisant des
315techniques plus compliqu�es comme le stockage externe des d�finitions
316des serveurs virtuels, ces derni�res �tant accessibles via des
317directives <code class="directive"><a href="/mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>. Ces
318techniques sont d�crites dans la <a href="/rewrite/vhosts.html">documentation sur la r��criture</a>.</p>
319
320</div></div>
321<div class="bottomlang">
322<p><span>Langues Disponibles: </span><a href="/en/vhosts/mass.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
323<a href="/fr/vhosts/mass.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
324<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
325<a href="/tr/vhosts/mass.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
326</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
327<script type="text/javascript"><!--//--><![CDATA[//><!--
328var comments_shortname = 'httpd';
329var comments_identifier = 'http://httpd.apache.org/docs/2.4/vhosts/mass.html';
330(function(w, d) {
331    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
332        d.write('<div id="comments_thread"><\/div>');
333        var s = d.createElement('script');
334        s.type = 'text/javascript';
335        s.async = true;
336        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
337        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
338    }
339    else { 
340        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
341    }
342})(window, document);
343//--><!]]></script></div><div id="footer">
344<p class="apache">Copyright 2014 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
345<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
346if (typeof(prettyPrint) !== 'undefined') {
347    prettyPrint();
348}
349//--><!]]></script>
350</body></html>