details.html.fr revision ba543b319188dc1887607f6d59feddc00e38eee2
<?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>D�tails sur le fonctionnement des serveurs virtuels - 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 rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
<script src="/style/scripts/prettify.js" type="text/javascript">
</script>
<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="http://wiki.apache.org/httpd/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.5</p>
<img alt="" src="/images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
<div id="path">
<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.5</a> &gt; <a href="./">Serveurs virtuels</a></div><div id="page-content"><div id="preamble"><h1>D�tails sur le fonctionnement des serveurs virtuels</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="/en/vhosts/details.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="/fr/vhosts/details.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
<a href="/ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="/tr/vhosts/details.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
</div>
<p>Ce document vise � expliquer dans le d�tail comment le serveur
HTTP Apache proc�de lors du choix de l'utilisation
d'un serveur virtuel en fonction d'une requ�te re�ue.</p>
<p>Il est recommand� de lire la documentation<a href="name-based.html#namevip">
Serveurs virtuels � base de nom et serveurs virtuels � base
d'adresse IP</a> pour d�terminer quel type de serveur virtuel nous
convient le mieux, puis de lire les documentations <a href="name-based.html">serveurs virtuels � base de nom</a> ou <a href="ip-based.html">serveurs virtuels � base d'adresse IP</a>, et enfin
d'�tudier <a href="examples.html">quelques exemples</a>.</p>
<p>Si vous voulez entrer dans les d�tails, vous pouvez revenir vers
cette page.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#configparsing">Fichier de configuration</a></li>
<li><img alt="" src="/images/down.gif" /> <a href="#hostmatching">Choix du serveur virtuel</a></li>
<li><img alt="" src="/images/down.gif" /> <a href="#tips">Trucs et astuces</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="ip-based.html">Support des serveurs virtuels � base
d'adresse IP</a></li><li><a href="name-based.html">Support des serveurs virtuels � base
de nom</a></li><li><a href="examples.html">Exemples de serveurs virtuels pour une
configuration courante</a></li><li><a href="mass.html">H�bergement virtuel de masse configur�
dynamiquement</a></li></ul><ul class="seealso"><li><a href="#comments_section">Commentaires</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="configparsing" id="configparsing">Fichier de configuration</a></h2>
<p>Un <em>serveur principal (main_server)</em> contient toutes
les d�finitions qui apparaissent en dehors des sections
<code>&lt;VirtualHost&gt;</code>.</p>
<p>Les serveurs virtuels, aussi
appel�s <em>vhosts</em> (pour virtual hosts), sont d�finis par les
sections <code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>.</p>
<p>Chaque directive <code>VirtualHost</code> comporte une ou
plusieurs adresses et des ports optionnels.</p>
<p>Il est possible d'utiliser des noms d'h�tes dans la d�finition
d'un serveur virtuel, mais ils seront r�solus en adresses IP au
d�marrage du serveur, et si une r�solution de nom �choue, cette
d�finition de serveur virtuel sera ignor�e. Cette m�thode est par
cons�quent d�conseill�e.</p>
<p>L'adresse peut
�tre sp�cifi�e sous la forme <code>*</code>, ce qui conviendra � la
requ�te si aucun autre serveur virtuel ne poss�de l'adresse IP
explicite correspondant � celle de la requ�te.</p>
<p>L'adresse qui appara�t dans la directive <code>VirtualHost</code>
peut �tre associ�e � un port optionnel. Si aucun port n'est
sp�cifi�, il s'agit d'un port g�n�rique qui peut aussi �tre sp�cifi�
comme <code>*</code>. Le port g�n�rique correspond � toutes les
valeurs de port.</p>
<p>(Il ne faut pas confondre les num�ros de port sur lesquels Apache
est en �coute avec les num�ros de port sp�cifi�s dans la directive
<code>VirtualHost</code> ; ces derniers ne servent qu'� d�finir le
<code>serveur virtuel</code> qui sera s�lectionn� pour traiter la
requ�te. Pour d�finir les ports sur lesquels Apache est en �coute,
utilisez la directive <code class="directive"><a href="/mod/mpm_common.html#listen">Listen</a></code>).
</p>
<p>L'ensemble des adresses (y compris les r�sultats multiples
<code>A</code> issus des requ�tes DNS) est appel� <em>jeu
d'adresses</em> du serveur virtuel.</p>
<p>Apache fait automatiquement sa s�lection � partir de l'en-t�te
HTTP <code>Host</code> fourni par le client, lorsque la
correspondance la plus exacte du point de vue adresse IP/port a lieu
pour plusieurs serveurs virtuels.</p>
<p>La directive <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code> peut
appara�tre en quelque endroit de la d�finition d'un serveur.
Cependant, chaque occurrence �crase la pr�c�dente (pour ce serveur).
Si aucune directive <code>ServerName</code> n'est sp�cifi�e, le
serveur tente de d�terminer le nom du serveur � partir de l'adresse
IP.</p>
<p>Le premier serveur virtuel � base de nom apparaissant dans le
fichier de configuration pour une paire IP:port donn�e est
significatif car c'est lui qui sera utilis� pour toutes les requ�tes
re�ues sur cette adresse IP/port et pour laquelle aucun autre
serveur virtuel ne poss�de un ServerName ou un ServerAlias
correspondant. Il sera aussi utilis� pour toutes les connexions SSL
si le serveur ne supporte pas l'<a class="glossarylink" href="/glossary.html#servernameindication" title="voir glossaire">Indication du nom du serveur</a>.</p>
<p>Pour chaque serveur virtuel, diverses valeurs sont initialis�es
par d�faut. En particulier&nbsp;:</p>
<ol>
<li>Dans le cas o� un serveur virtuel ne contient pas de directives
<code class="directive"><a href="/mod/core.html#serveradmin">ServerAdmin</a></code>,
<code class="directive"><a href="/mod/core.html#timeout">Timeout</a></code>,
<code class="directive"><a href="/mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code>,
<code class="directive"><a href="/mod/core.html#keepalive">KeepAlive</a></code>,
<code class="directive"><a href="/mod/core.html#maxkeepaliverequests">MaxKeepAliveRequests</a></code>,
<code class="directive"><a href="/mod/mpm_common.html#receivebuffersize">ReceiveBufferSize</a></code>,
ou <code class="directive"><a href="/mod/mpm_common.html#sendbuffersize">SendBufferSize</a></code>,
alors la valeur de chacun de ces param�tres est h�rit�e de celle du
serveur principal. (C'est � dire, h�rit�e de la valeur finale apr�s
lecture de la configuration du serveur principal.)</li>
<li>Les permissions par d�faut sur les r�pertoires de chaque
serveur virtuel sont assembl�es avec celles du serveur principal.
Elles concernent �galement toutes les informations de configuration
par r�pertoire pour tous les modules.</li>
<li>Les configurations par serveur pour chaque module sont assembl�es
� partir de celles du serveur principal.</li>
</ol>
<p>L'essentiel des valeurs de configuration des serveurs virtuels
provient de valeurs par d�faut issues du serveur principal.
Mais la position dans le fichier de configuration des directives
du serveur principal n'a pas d'importance -- l'ensemble de la
configuration du serveur principal est lu avant que ces valeurs par
d�faut soient appliqu�es aux serveur virtuels. Ainsi, m�me si la
d�finition d'une valeur appara�t apr�s celle d'un serveur virtuel,
cette valeur peut affecter la definition du serveur virtuel.</p>
<p>Dans le cas o� le serveur principal n'a pas de <code>ServerName</code>
� ce stade, le nom de la machine sur laquelle tourne le programme
<code class="program"><a href="/programs/httpd.html">httpd</a></code> est utilis� � sa place. Nous appellerons
<em>jeu d'adresses du serveur principal</em> les adresses IP
renvoy�es par une r�solution DNS sur le <code>ServerName</code>
du serveur principal.</p>
<p>Pour tous les champs <code>ServerName</code> non d�finis, dans
le cas d'une configuration en serveur virtuel par nom, la valeur
adopt�e par d�faut est la premi�re adresse donn�e dans la section
<code>VirtualHost</code> qui d�finit le serveur virtuel.</p>
<p>Si un serveur virtuel contient la valeur magique
<code>_default_</code>, il fonctionne sur le m�me <code>ServerName</code>
que le serveur principal.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="hostmatching" id="hostmatching">Choix du serveur virtuel</a></h2>
<p>� la r�ception d'une requ�te, le serveur proc�de comme suit pour
d�terminer quel serveur virtuel utiliser&nbsp;:</p>
<h3><a name="hashtable" id="hashtable">Recherche de l'adresse IP</a></h3>
<p>Lors d'une premi�re connexion sur une adresse/port, le serveur
recherche toutes les directives <code>VirtualHost</code> qui
poss�dent la m�me adresse IP/port.</p>
<p>S'il n'y a aucune correspondance exacte pour cette adresse/port,
la recherche s'effectue sur la valeur g�n�rique (<code>*</code>).</p>
<p>Si aucune correspondance n'est enfin trouv�e, la requ�te sera
servie par le serveur principal.</p>
<p>S'il existe des d�finitions <code>VirtualHost</code> pour
l'adresse IP, l'�tape suivante consiste � d�terminer si nous avons �
faire � un serveur virtuel � base de nom ou d'adresse IP.</p>
<h3><a name="ipbased" id="ipbased">Serveur virtuel par IP</a></h3>
<p>Si une seule section <code>VirtualHost</code> pr�sente la
meilleure correspondance avec la paire adresse IP/port, aucune
action n'est entreprise et la requ�te est
trait�e par le serveur virtuel qui correspond.</p>
<h3><a name="namebased" id="namebased">Serveur virtuel par nom</a></h3>
<p>Si plusieurs sections <code>VirtualHost</code> pr�sentent la
meilleure correspondance avec la paire adresse IP/port, le terme
"liste" dans les �tapes suivantes fait r�f�rence � la liste des
serveurs virtuels qui correspondent, selon l'ordre dans lequel ils
apparaissent dans le fichier de configuration.</p>
<p>Si la connexion utilise SSL, si le serveur supporte l'<a class="glossarylink" href="/glossary.html#servernameindication" title="voir glossaire">Indication de nom de serveur</a>,
et si la n�gociation du client SSL inclut l'extension TLS dans le
nom d'h�te requis, alors ce nom d'h�te sera utilis� par la suite, tout
comme un en-t�te <code>Host:</code> aurait �t� utilis� dans le cas
d'une connexion non-SSL. Si ces conditions ne sont pas r�unies, le
premier serveur virtuel � base de nom dont l'adresse correspond sera
utilis� pour les connexions SSL. Ceci est important car c'est le
serveur virtuel qui d�termine quel certificat le serveur va utiliser
pour la connexion.</p>
<p>Si la requ�te contient un en-t�te <code>Host:</code>, on
recherche dans la liste le premier serveur virtuel dont le
<code>ServerName</code> ou le <code>ServerAlias</code> correspond,
et c'est celui-ci qui va traiter la requ�te. Un en-t�te
<code>Host:</code> peut comporter un num�ro de port mais Apache
l'ignore syst�matiquement et utilise toujours le
port sur lequel il a effectivement re�u la requ�te.</p>
<p>Le premier serveur virtuel du fichier de configuration qui
poss�de l'adresse sp�cifi�e est prioritaire et intercepte toutes les
requ�tes � destination d'un nom de serveur inconnu, ou toute requ�te
sans en-t�te <code>Host:</code> (comme les requ�tes HTTP/1.0).</p>
<h3><a name="persistent" id="persistent">Connexions persistantes</a></h3>
<p>La <em>recherche par adresse IP</em> d�crite ci-avant n'est faite
qu'<em>une fois</em> pour chaque session TCP/IP, alors que la
<em>recherche par nom</em> est r�alis�e pour <em>chaque</em> requ�te au
cours d'une connexion persistante (KeepAlive). En d'autres termes,
il est possible pour un client de faire des requ�tes sur
diff�rents serveurs virtuels par nom, au cours d'une unique
connexion persistante.</p>
<h3><a name="absoluteURI" id="absoluteURI">URI absolu</a></h3>
<p>Au cas o� l'URI de la requ�te est absolu, et que son nom de
serveur et son port correspondent au serveur principal (ou l'un
des serveurs virtuels configur�s), <em>et</em> qu'ils correspondent
� l'adresse et au port de la requ�te, alors l'URI est amput�
de son pr�fixe protocole/nom de serveur/port et trait� par le
serveur correspondant (principal ou virtuel). Si cette correspondance
n'existe pas, l'URI reste inchang� et la requ�te est consid�r�e
comme une requ�te d'un serveur mandataire (proxy).</p>
<h3><a name="observations" id="observations">Observations</a></h3>
<ul>
<li>La s�lection d'un serveur virtuel en fonction de son nom est
un processus qui intervient apr�s la s�lection par le serveur du
serveur virtuel qui correspond le mieux du point de vue adresse
IP/port.</li>
<li>Si vous ne tenez pas compte de l'adresse IP � laquelle le
client s'est connect�, indiquez un caract�re "*" comme adresse
pour tous les serveurs virtuels, et la s�lection du serveur
virtuel en fonction du nom s'appliquera alors � tous les serveurs
virtuels d�finis.</li>
<li>Les v�rifications sur <code>ServerName</code> et
<code>ServerAlias</code> ne sont jamais
r�alis�es pour les serveurs virtuels par IP.</li>
<li>Seul l'ordre des serveurs virtuels par nom
pour une adresse donn�e a une importance. Le serveur virtuel
par nom qui est pr�sent en premier dans la configuration se
voit attribu� la priorit� la plus haute pour les requ�tes
arrivant sur son jeu d'adresses IP.</li>
<li>Le num�ro de port contenu dans l'en-t�te <code>Host:</code> n'est jamais utilis�
pour les tests de correspondances. Apache ne prend en compte
que le num�ro de port sur lequel le client a envoy� la requ�te.</li>
<li>Si deux serveurs virtuels partagent la m�me adresse, la
s�lection se fera implicitement sur le nom. Il s'agit d'une
nouvelle fonctionnalit� de la version 2.3.11.</li>
<li>Le serveur principal ne sert les requ�tes que
lorsque l'adresse IP et le port demand�s par le client ne
correspondent � aucun serveur virtuel (y compris un serveur
virtuel <code>*</code>). En d'autres termes, le serveur
principal n'est utile que pour les combinaisons adresse/port
non sp�cifi�es (sauf quand un serveur virtuel <code>_default_</code>
correspond au port).</li>
<li>Il ne faut jamais employer de noms DNS dans des directives
<code>VirtualHost</code>, car cela oblige le serveur a s'appuyer
sur le DNS au moment du d�marrage. De plus, vous vous exposez
� des probl�mes de s�curit� si vous n'avez pas la ma�trise du
DNS pour la totalit� de vos domaines. Voir la documentation
<a href="/dns-caveats.html">disponible ici</a>, ainsi que
les deux points pr�cis�s ci-apr�s.</li>
<li>Un nom de serveur <code>ServerName</code> devrait toujours
�tre indiqu� pour chaque serveur virtuel. Sans cela, une
r�solution DNS est n�cessaire pour chaque serveur virtuel.</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="tips" id="tips">Trucs et astuces</a></h2>
<p>En plus des points �voqu�s sur la page des
<a href="/dns-caveats.html#tips">probl�mes li�s au DNS</a>,
voici quelques points int�ressants&nbsp;:</p>
<ul>
<li>Toujours positionner les d�finitions relatives au serveur
principal avant toute d�finition <code>VirtualHost</code>.
(Ceci am�liore grandement la lisibilit� de la configuration
-- la mani�re dont la configuration est interpr�t�e apr�s la
lecture des fichiers ne met pas en �vidence le fait que les
d�finitions positionn�es avant et surtout apr�s les serveurs
virtuels peuvent impacter le fonctionnement de tous les
serveurs virtuels.)</li>
</ul>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="/en/vhosts/details.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="/fr/vhosts/details.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
<a href="/ko/vhosts/details.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="/tr/vhosts/details.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
</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>This section is experimental!</strong><br />Comments placed here should not be expected
to last beyond the testing phase of this system, nor do we in any way guarantee that we'll read them.</div>
<div id="disqus_thread">
</div><script type="text/javascript"><!--//--><![CDATA[//><!--
var lang = 'fr';
var disqus_shortname = 'httpd';
var disqus_identifier = window.location.href.replace(/(current|trunk)/, "2.4").replace(/\/[a-z]{2}\//, "/").replace(window.location.protocol, "http:") + '.' + lang;
if (disqus_identifier.indexOf("httpd.apache.org") != -1) {
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = window.location.protocol + '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
} else {
var text = document.createTextNode("Comments have been disabled for offline viewing.");
document.getElementById('disqus_thread').appendChild(text);
}
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2012 The Apache Software Foundation.<br />Autoris� 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="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[//><!--
if (typeof(prettyPrint) !== undefined) {
prettyPrint();
}
//--><!]]></script>
</body></html>