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="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 22<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.4</a> > <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"> en </a> | 25<a href="/fr/vhosts/mass.html" title="Fran�ais"> fr </a> | 26<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 27<a href="/tr/vhosts/mass.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </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><VirtualHost></code> tr�s semblables, 58 dans le style :</p> 59 60<pre class="prettyprint lang-config"><VirtualHost 111.22.33.44> 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</VirtualHost> 65 66<VirtualHost 111.22.33.44> 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</VirtualHost> 71 72<VirtualHost 111.22.33.44> 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</VirtualHost></pre> 77 78 79 <p>Nous voulons remplacer toutes les configurations 80 <code><VirtualHost></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><VirtualHost></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><VirtualHost></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<Directory /www/commercial> 241 Options FollowSymLinks 242 AllowOverride All 243</Directory> 244 245<Directory /www/homepages> 246 Options FollowSymLinks 247 AllowOverride None 248</Directory> 249 250<VirtualHost 111.22.33.44> 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</VirtualHost> 258 259<VirtualHost 111.22.33.45> 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</VirtualHost></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"> en </a> | 323<a href="/fr/vhosts/mass.html" title="Fran�ais"> fr </a> | 324<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 325<a href="/tr/vhosts/mass.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </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&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>