-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision: 654723 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision : 1662017 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision: 421100 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision : 890440 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision: 421100 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1555566 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1480918 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English revision : 1449511 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English revision : 1044382 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision : 1657859 -->
-<?xml version="1.0"?>
+<?xml version="1.0" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1688765 -->
-<?xml version="1.0"?>
+<?xml version="1.0" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1598135 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1725069 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision: 421100 -->
-<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision: 1563423 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision : 1223051 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1608304 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1365932 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1365932 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1137344 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision: 1590664 -->
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
<!-- English Revision : 1038595 -->
-<?xml version='1.0' encoding='ISO-8859-1' ?>
+<?xml version='1.0' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1365935 -->
<manualpage metafile="details.xml.meta">
<parentdocument href="./">Serveurs virtuels</parentdocument>
- <title>Détails sur le fonctionnement des serveurs virtuels</title>
+ <title>Détails sur le fonctionnement des serveurs virtuels</title>
<summary>
- <p>Le code gérant les serveurs virtuels a été réécrit à partir de
- zéro dans <strong>Apache 1.3</strong>. Ce document vise à expliquer
- dans le détail comment Apache procède lors du choix de l'utilisation
- d'un serveur virtuel en fonction d'une requête reçue. L'apparition
+ <p>Le code gérant les serveurs virtuels a été réécrit à partir de
+ zéro dans <strong>Apache 1.3</strong>. Ce document vise à expliquer
+ dans le détail comment Apache procède lors du choix de l'utilisation
+ d'un serveur virtuel en fonction d'une requête reçue. L'apparition
de la directive <directive module="core">NameVirtualHost</directive>
- a rendu beaucoup plus facile et plus sûre la configuration des
- serveurs virtuels par rapport aux versions précédant la 1.3.</p>
+ a rendu beaucoup plus facile et plus sûre la configuration des
+ serveurs virtuels par rapport aux versions précédant la 1.3.</p>
- <p>Si vous voulez juste <cite>que ça marche</cite> sans en
+ <p>Si vous voulez juste <cite>que ça marche</cite> sans en
comprendre le fonctionnement, voici <a href="examples.html">quelques
exemples</a>.</p>
</summary>
-<section id="configparsing"><title>Interprétation des fichiers
+<section id="configparsing"><title>Interprétation des fichiers
de configuration</title>
<p>Un <em>serveur principal (main_server)</em> contient toutes
- les définitions qui apparaissent en dehors des sections
+ les définitions qui apparaissent en dehors des sections
<code><VirtualHost></code>. Les serveurs virtuels, aussi
- appelés <em>vhosts</em> (pour virtual hosts), sont définis par les
+ appelés <em>vhosts</em> (pour virtual hosts), sont définis par les
sections <directive type="section" module="core">VirtualHost</directive>.</p>
<p>Les directives
<directive module="core">ServerName</directive> et
<directive module="core">ServerPath</directive>
- peuvent être placées n'importe où dans le cadre de définition d'un
- serveur. Cependant, chaque fois que l'une d'elles est lue, elle écrase
- ses instances précédentes (dans le contexte du même serveur).</p>
+ peuvent être placées n'importe où dans le cadre de définition d'un
+ serveur. Cependant, chaque fois que l'une d'elles est lue, elle écrase
+ ses instances précédentes (dans le contexte du même serveur).</p>
<p>Le serveur principal n'a pas de valeur par
- défaut pour <code>ServerPath</code> ni pour <code>ServerAlias</code>.
- La valeur par défaut de <code>ServerName</code> est déduite à partir
+ défaut pour <code>ServerPath</code> ni pour <code>ServerAlias</code>.
+ La valeur par défaut de <code>ServerName</code> est déduite à partir
de l'adresses IP du serveur.</p>
- <p>Les numéros de port spécifiés par la directive
- <code>VirtualHost</code> n'ont rien à voir avec les ports sur
- lesquels Apache va se mettre en écoute. Ils permettent seulement
- de déterminer quel <code>VirtualHost</code> devra être
- sélectionné pour traiter la requête.</p>
+ <p>Les numéros de port spécifiés par la directive
+ <code>VirtualHost</code> n'ont rien à voir avec les ports sur
+ lesquels Apache va se mettre en écoute. Ils permettent seulement
+ de déterminer quel <code>VirtualHost</code> devra être
+ sélectionné pour traiter la requête.</p>
<p>Chaque adresse incluse dans une directive <code>VirtualHost</code>
- peut disposer d'un port optionnel. Si le port n'est pas précisé, il
+ peut disposer d'un port optionnel. Si le port n'est pas précisé, il
pourra prendre n'importe quelle valeur. Le port particulier
- <code>*</code> représente un joker qui correspond à tous les ports.
- L'ensemble des adresses (y compris les résultats multiples
- <code>A</code> issus des requêtes DNS) est appelé <em>jeu
+ <code>*</code> représente un joker qui correspond à tous les ports.
+ 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>À moins qu'une directive
- <directive module="core">NameVirtualHost</directive> ne soit utilisée
+ <p>À moins qu'une directive
+ <directive module="core">NameVirtualHost</directive> ne soit utilisée
pour la paire adresse IP exacte/port dans la directive
- <code>VirtualHost</code>, Apache sélectionne le serveur virtuel qui
+ <code>VirtualHost</code>, Apache sélectionne le serveur virtuel qui
correspond le mieux en se basant sur l'adresse IP (ou une adresse
- quelconque) et le numéro de port. Si plusieurs serveurs virtuels
- correspondent sans pouvoir être départagés, c'est le premier qui
- apparaît dans le fichier de configuration qui sera sélectionné.</p>
+ quelconque) et le numéro de port. Si plusieurs serveurs virtuels
+ correspondent sans pouvoir être départagés, c'est le premier qui
+ apparaît dans le fichier de configuration qui sera sélectionné.</p>
- <p>Si vous souhaitez qu'Apache <em>affine</em> ses critères de
- sélection en faisant entrer en jeu l'en-tête HTTP <code>Host</code>
+ <p>Si vous souhaitez qu'Apache <em>affine</em> ses critères de
+ sélection en faisant entrer en jeu l'en-tête HTTP <code>Host</code>
fourni par le client, la directive <code>NameVirtualHost</code> <em>doit</em>
- apparaître avec la paire adresse IP exacte (ou adresse
- quelconque)/port utilisée dans le jeu de directives
+ apparaître avec la paire adresse IP exacte (ou adresse
+ quelconque)/port utilisée dans le jeu de directives
<code>VirtualHost</code> correspondant.</p>
- <p>La sélection du serveur virtuel en fonction du nom n'intervient
- qu'après la sélection d'un serveur virtuel à base d'adresse IP
+ <p>La sélection du serveur virtuel en fonction du nom n'intervient
+ qu'après la sélection d'un serveur virtuel à base d'adresse IP
unique, et ne prend en compte que l'ensemble des serveurs virtuels
- qui possèdent la même paire adresse IP/port.</p>
+ qui possèdent la même paire adresse IP/port.</p>
- <p>On peut utiliser des nom d'hôtes à la place d'adresses IP dans la
- définition des serveurs virtuels, mais ils seront résolus en
- adresses IP au démarrage du serveur et ceci n'est pas recommandé.</p>
+ <p>On peut utiliser des nom d'hôtes à la place d'adresses IP dans la
+ définition des serveurs virtuels, mais ils seront résolus en
+ adresses IP au démarrage du serveur et ceci n'est pas recommandé.</p>
<p>On peut utiliser plusieurs directives <code>NameVirtualHost</code>
pour un groupe de directives <code>VirtualHost</code>, mais seule
- une directive <code>NameVirtualHost</code> doit être utilisée pour
- chaque couple IP:port donné.</p>
+ une directive <code>NameVirtualHost</code> doit être utilisée pour
+ chaque couple IP:port donné.</p>
<p>L'ordre d'apparition des directives <code>NameVirtualHost</code>
et <code>VirtualHost</code> est sans importance, ce qui fait que
</tr></table>
- <p>(Il est conseillé d'adopter le choix de gauche pour faciliter
- la lisibilité des fichiers de configuration.)</p>
+ <p>(Il est conseillé d'adopter le choix de gauche pour faciliter
+ la lisibilité des fichiers de configuration.)</p>
<p>Pendant la phase d'initialisation, une liste de chaque adresse
- IP est générée et introduite dans une table de 'hash'. Si une
- adresse IP est utilisée dans une directive <code>NameVirtualHost</code>,
+ IP est générée et introduite dans une table de 'hash'. Si une
+ adresse IP est utilisée dans une directive <code>NameVirtualHost</code>,
cette liste contient les noms des serveurs virtuels pour cette
- adresse. Si aucun serveur virtuel n'est défini pour cette adresse,
- la directive <code>NameVirtualHost</code> est ignorée et un message
- est envoyé au journal d'erreurs. Quand un serveur virtuel par IP
- est utilisé, la table de 'hash' reste vide.</p>
+ adresse. Si aucun serveur virtuel n'est défini pour cette adresse,
+ la directive <code>NameVirtualHost</code> est ignorée et un message
+ est envoyé au journal d'erreurs. Quand un serveur virtuel par IP
+ est utilisé, la table de 'hash' reste vide.</p>
- <p>La fonction de 'hash' étant rapide, le temps d'exécution d'un
- 'hash' sur une adresse IP lors d'une requête est minimale et
- quasiment imperceptible. De plus, la table est optimisée pour les
- adresses IP dont le dernier octet est le seul à changer.</p>
+ <p>La fonction de 'hash' étant rapide, le temps d'exécution d'un
+ 'hash' sur une adresse IP lors d'une requête est minimale et
+ quasiment imperceptible. De plus, la table est optimisée pour les
+ adresses IP dont le dernier octet est le seul à changer.</p>
- <p>Pour chaque serveur virtuel, diverses valeurs sont initialisées
- par défaut. En particulier :</p>
+ <p>Pour chaque serveur virtuel, diverses valeurs sont initialisées
+ par défaut. En particulier :</p>
<ol>
- <li>Dans le cas où un serveur virtuel ne contient pas de directives
+ <li>Dans le cas où un serveur virtuel ne contient pas de directives
<directive module="core">ServerAdmin</directive>,
<directive module="core">Timeout</directive>,
<directive module="core">KeepAliveTimeout</directive>,
<directive module="core">MaxKeepAliveRequests</directive>,
<directive module="mpm_common">ReceiveBufferSize</directive>,
ou <directive module="mpm_common">SendBufferSize</directive>,
- 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
+ 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 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>
+ <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.
+ 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,
+ 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
- <program>httpd</program> est utilisé à sa place. Nous appellerons
+ <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
+ <program>httpd</program> 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>
+ 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
+ <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>
+ 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>
+ <code>_default_</code>, il fonctionne sur le même <code>ServerName</code>
que le serveur principal.</p>
</section>
<section id="hostmatching"><title>Choix du serveur virtuel</title>
- <p>À la réception d'une requête, le serveur procède comme suit pour
- déterminer quel serveur virtuel utiliser :</p>
+ <p>À la réception d'une requête, le serveur procède comme suit pour
+ déterminer quel serveur virtuel utiliser :</p>
- <section id="hashtable"><title>Vérification dans la table de hash</title>
+ <section id="hashtable"><title>Vérification dans la table de hash</title>
- <p>Après que le client se soit connecté, l'adresse
- IP à laquelle le client s'est connecté est recherchée dans la
+ <p>Après que le client se soit connecté, l'adresse
+ IP à laquelle le client s'est connecté est recherchée dans la
table de hash IP interne.</p>
- <p>Si la résolution de l'adresse IP n'aboutit pas (adresse IP non
- trouvée), la requête est servie par le serveur virtuel
- <code>_default_</code> s'il est défini pour le port correspondant
- à la requête. Sinon, elle est servie par le serveur principal.</p>
+ <p>Si la résolution de l'adresse IP n'aboutit pas (adresse IP non
+ trouvée), la requête est servie par le serveur virtuel
+ <code>_default_</code> s'il est défini pour le port correspondant
+ à la requête. Sinon, elle est servie par le serveur principal.</p>
- <p>Si l'adresse IP n'est pas trouvée dans la table de hash, la
- recherche du numéro de port peut aussi se terminer par une
- correspondance à un <code>NameVirtualHost *</code> qui est géré
+ <p>Si l'adresse IP n'est pas trouvée dans la table de hash, la
+ recherche du numéro de port peut aussi se terminer par une
+ correspondance à un <code>NameVirtualHost *</code> qui est géré
ensuite comme les autres serveurs virtuels par noms.</p>
- <p>Si une liste est bien trouvée dans la table pour l'adresse
- IP recherchée, l'étape suivante est de déterminer s'il s'agit
+ <p>Si une liste est bien trouvée dans la table pour l'adresse
+ IP recherchée, l'étape suivante est de déterminer s'il s'agit
d'un serveur virtuel par nom ou par IP.</p>
</section>
<section id="ipbased"><title>Serveur virtuel par IP</title>
- <p>Si l'entrée trouvée dispose d'une liste de noms vide, c'est
+ <p>Si l'entrée trouvée dispose d'une liste de noms vide, c'est
qu'il s'agit d'un serveur virtuel par IP, et aucun autre choix
- n'est plus à faire ; la requête est servie par ce serveur virtuel.</p>
+ n'est plus à faire ; la requête est servie par ce serveur virtuel.</p>
</section>
<section id="namebased"><title>Serveur virtuel par nom</title>
- <p>Si l'entrée trouvée correspond à un serveur virtuel par nom,
+ <p>Si l'entrée trouvée correspond à un serveur virtuel par nom,
la liste de noms contient au moins une structure de serveurs
- virtuels. Les serveurs virtuels se présentent dans cette liste
- dans le même ordre que la lecture des directives <code>VirtualHost</code>
+ virtuels. Les serveurs virtuels se présentent dans cette liste
+ dans le même ordre que la lecture des directives <code>VirtualHost</code>
dans le fichier de configuration.</p>
<p>Le premier serveur virtuel de cette liste (donc, le premier
serveur virtuel du fichier de configuration
- attribué à l'adresse IP spécifiée)
- se voit attribuer la plus grande priorité, ce
- qui signifie que c'est lui qui traite les requêtes présentant un
- nom de serveur invalide ou ne présentant pas de champ
- <code>Host:</code> dans l'en-tête.</p>
-
- <p>Si un champ <code>Host:</code> est transmis dans l'en-tête de
- la requête, son occurrence est recherchée dans la liste et le
- premier serveur virtuel qui présente un <code>ServerName</code>
+ attribué à l'adresse IP spécifiée)
+ se voit attribuer la plus grande priorité, ce
+ qui signifie que c'est lui qui traite les requêtes présentant un
+ nom de serveur invalide ou ne présentant pas de champ
+ <code>Host:</code> dans l'en-tête.</p>
+
+ <p>Si un champ <code>Host:</code> est transmis dans l'en-tête de
+ la requête, son occurrence est recherchée dans la liste et le
+ premier serveur virtuel qui présente un <code>ServerName</code>
ou un <code>ServerAlias</code> correspondant est choisi pour
- servir la requête. Il est possible que le champ <code>Host:</code>
- contienne un numéro de port, mais Apache utilise toujours le
- port sur lequel il a effectivement reçu la requête.</p>
-
- <p>La liste complète des noms dans la section
- <code>VirtualHost</code> sont traités comme un
- <code>ServerAlias</code> sans caractères génériques (mais ne sont
- pas écrasés par une directive <code>ServerAlias</code>).</p>
-
- <p>Dans le cas où le client a envoyé une requête en HTTP/1.0 sans
- champ d'en-tête <code>Host:</code>, il est impossible de
- déterminer le serveur auquel le client veut se connecter ; l'URI
- de la requête est recherché dans tous les <code>ServerPath</code>
- existants. Le premier chemin trouvé est utilisé et la requête est
+ servir la requête. Il est possible que le champ <code>Host:</code>
+ contienne un numéro de port, mais Apache utilise toujours le
+ port sur lequel il a effectivement reçu la requête.</p>
+
+ <p>La liste complète des noms dans la section
+ <code>VirtualHost</code> sont traités comme un
+ <code>ServerAlias</code> sans caractères génériques (mais ne sont
+ pas écrasés par une directive <code>ServerAlias</code>).</p>
+
+ <p>Dans le cas où le client a envoyé une requête en HTTP/1.0 sans
+ champ d'en-tête <code>Host:</code>, il est impossible de
+ déterminer le serveur auquel le client veut se connecter ; l'URI
+ de la requête est recherché dans tous les <code>ServerPath</code>
+ existants. Le premier chemin trouvé est utilisé et la requête est
servie par le serveur virtuel correspondant.</p>
- <p>Si aucun serveur virtuel n'est trouvé, la requête est servie
- par le premier serveur virtuel qui écoute sur le port demandé et
- qui est sur la liste associée à l'adresse IP vers laquelle la
- requête a été envoyée (comme déjà précisé ci-avant).</p>
+ <p>Si aucun serveur virtuel n'est trouvé, la requête est servie
+ par le premier serveur virtuel qui écoute sur le port demandé et
+ qui est sur la liste associée à l'adresse IP vers laquelle la
+ requête a été envoyée (comme déjà précisé ci-avant).</p>
</section>
<section id="persistent"><title>Connexions persistantes</title>
- <p>La recherche par adresse IP décrite ci-avant n'est faite
+ <p>La recherche par adresse IP décrite ci-avant n'est faite
qu'<em>une fois</em> pour chaque session TCP/IP, alors que la
- recherche par nom est réalisée pour <em>chaque</em> requête au
+ recherche par nom 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
+ 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>
</section>
<section id="absoluteURI"><title>URI absolu</title>
- <p>Au cas où l'URI de la requête est absolu, et que son nom de
+ <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
+ 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>
+ 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>
</section>
<section id="observations"><title>Observations</title>
<ul>
- <li>Les serveurs virtuels par nom et par IP n'interfèrent
+ <li>Les serveurs virtuels par nom et par IP n'interfèrent
jamais entre eux. Les serveurs virtuels par IP ne sont joignables
qu'au travers de leur(s) adresse(s) IP propre(s), et en aucun
cas par une autre adresse. Les serveurs virtuels par nom
ne sont accessibles que par leur(s) adresse(s) IP qui ne peuvent
- être définies qu'au moyen de la directive
+ être définies qu'au moyen de la directive
<code>NameVirtualHost</code>.</li>
- <li>Les vérifications sur <code>ServerAlias</code> et
- <code>ServerPath</code> ne sont jamais réalisées pour les
+ <li>Les vérifications sur <code>ServerAlias</code> et
+ <code>ServerPath</code> ne sont jamais réalisées pour les
serveurs virtuels par IP.</li>
- <li>L'ordre dans lequel sont agencés dans le fichier de
+ <li>L'ordre dans lequel sont agencés dans le fichier de
configuration le serveur virtuel <code>_default_</code>, les
serveurs virtuels par nom et par IP, et la directive
<code>NameVirtualHost</code> est sans incidence sur le
fonctionnement. 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
+ 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 présenté
- dans le champ d'en-tête <code>Host:</code> n'est jamais utilisé
+ <li>Le numéro de port présenté
+ dans le champ d'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>
+ que le numéro de port sur lequel le client a envoyé la requête.</li>
<li>Si une directive <code>ServerPath</code> existe, et se
- trouve être préfixe d'une autre directive <code>ServerPath</code>
- qui apparaît plus loin dans la configuration, la première
- sera toujours utilisée et la deuxième jamais. (Ceci ne se
- produit que dans le cas où aucun champ <code>Host:</code>
- n'a été présenté par le client pour distinguer les deux.)</li>
-
- <li>Dans le cas où deux serveurs virtuels par IP ont une
- adresse en commun, le serveur virtuel qui apparaît en premier
+ trouve être préfixe d'une autre directive <code>ServerPath</code>
+ qui apparaît plus loin dans la configuration, la première
+ sera toujours utilisée et la deuxième jamais. (Ceci ne se
+ produit que dans le cas où aucun champ <code>Host:</code>
+ n'a été présenté par le client pour distinguer les deux.)</li>
+
+ <li>Dans le cas où deux serveurs virtuels par IP ont une
+ adresse en commun, le serveur virtuel qui apparaît en premier
dans la configuration est toujours choisi. Ce genre de chose
peut arriver par inadvertance. Le serveur envoie une alerte
- dans le journal d'erreurs si ce cas se présente.</li>
+ dans le journal d'erreurs si ce cas se présente.</li>
- <li>Le serveur virtuel <code>_default_</code> ne sert la requête
+ <li>Le serveur virtuel <code>_default_</code> ne sert la requête
que si aucun autre serveur virtuel travaillant sur l'adresse
- IP <em>et</em> le port demandés n'est trouvé. La requête n'est
- traitée que si le numéro de port qui a reçu la requête est
- associé au serveur virtuel <code>_default_</code> (qui par
- défaut, correspond à <code>Listen</code>). Un port joker peut
- être spécifié (<em>comme dans</em> <code>_default_:*</code>)
- pour récupérer les requêtes sur tous les ports ouverts. Ceci
- est également applicable aux serveurs virtuels
+ IP <em>et</em> le port demandés n'est trouvé. La requête n'est
+ traitée que si le numéro de port qui a reçu la requête est
+ associé au serveur virtuel <code>_default_</code> (qui par
+ défaut, correspond à <code>Listen</code>). Un port joker peut
+ être spécifié (<em>comme dans</em> <code>_default_:*</code>)
+ pour récupérer les requêtes sur tous les ports ouverts. Ceci
+ est également applicable aux serveurs virtuels
<code>NameVirtualHost *</code>. Notez que ceci n'est qu'une
- extension du principe de "meilleure correspondance", au même titre
- qu'une correspondance spécifique et exacte est préférée à une
+ extension du principe de "meilleure correspondance", au même titre
+ qu'une correspondance spécifique et exacte est préférée à une
valeur quelconque.</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
+ <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>_default_</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>
+ non spécifiées (sauf quand un serveur virtuel <code>_default_</code>
correspond au port).</li>
<li>Ni les serveurs virtuels <code>_default_</code>, ni le
- serveur principal ne sont utilisés pour traiter une requête
- avec un champ d'en-tête <code>Host:</code> inconnu ou manquant
- lorsque l'adresse (et le port) de connexion correspondent à
+ serveur principal ne sont utilisés pour traiter une requête
+ avec un champ d'en-tête <code>Host:</code> inconnu ou manquant
+ lorsque l'adresse (et le port) de connexion correspondent à
des serveurs virtuels par nom, par exemple, dans une directive
<code>NameVirtualHost</code>.</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
+ 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>
+ 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>
+ être indiqué pour chaque serveur virtuel. Sans cela, une
+ résolution DNS est nécessaire pour chaque serveur virtuel.</li>
</ul>
</section>
<section id="tips"><title>Trucs et astuces</title>
- <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 :</p>
+ <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 :</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
+ <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>
- <li>Toujours regrouper les définitions <code>NameVirtualHost</code>
+ <li>Toujours regrouper les définitions <code>NameVirtualHost</code>
et <code>VirtualHost</code> correspondantes
- dans la configuration pour une meilleure lisibilité.</li>
+ dans la configuration pour une meilleure lisibilité.</li>
- <li>Éviter les <code>ServerPaths</code> qui sont préfixes
- d'autres <code>ServerPaths</code>. Si cela ne peut être évité,
- veillez à ce que le serveur virtuel contenant le préfixe le plus
- long (donc le plus précis) apparaisse dans le fichier de
+ <li>Éviter les <code>ServerPaths</code> qui sont préfixes
+ d'autres <code>ServerPaths</code>. Si cela ne peut être évité,
+ veillez à ce que le serveur virtuel contenant le préfixe le plus
+ long (donc le plus précis) apparaisse dans le fichier de
configuration avant le plus court. (<em>par exemple</em>,
- "ServerPath /abc" est à spécifier après "ServerPath /abc/def").</li>
+ "ServerPath /abc" est à spécifier après "ServerPath /abc/def").</li>
</ul>
</section>
-<?xml version='1.0' encoding='ISO-8859-1' ?>
+<?xml version='1.0' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1563423 -->
<summary>
- <p>Le but de ce document est d'essayer de répondre aux questions
- les plus répandues sur la configuration des <a href="index.html">serveurs virtuels</a>.
- Les scénarios présentés ici se rencontrent quand plusieurs
- serveurs Webs doivent tourner sur une seule et même machine au
+ <p>Le but de ce document est d'essayer de répondre aux questions
+ les plus répandues sur la configuration des <a href="index.html">serveurs virtuels</a>.
+ Les scénarios présentés ici se rencontrent quand plusieurs
+ serveurs Webs doivent tourner sur une seule et même machine au
moyen de serveurs virtuels <a href="name-based.html">par nom</a>
ou <a href="ip-based.html">par IP</a>.</p>
<note><title>Note :</title><p>La configuration de serveurs virtuels
sous Apache ne provoque pas leur apparition magique dans la
configuration du DNS. Il <em>faut</em> que leurs noms soient
- définis dans le DNS, et qu'ils y soient résolus sur l'adresse IP
+ définis dans le DNS, et qu'ils y soient résolus sur l'adresse IP
du serveur, faute de quoi personne ne pourra visiter votre site Web.
- Il est possible d'ajouter des entrées dans le fichier
+ Il est possible d'ajouter des entrées dans le fichier
<code>hosts</code> pour tests locaux, mais qui ne fonctionneront
- que sur la machine possédant ces entrées.</p>
+ que sur la machine possédant ces entrées.</p>
</note>
<example>
<title>Configuration du serveur</title>
- # Apache doit écouter sur le port 80<br />
+ # Apache doit écouter sur le port 80<br />
Listen 80<br />
<br />
- # Toutes les adresses IP doivent répondre aux requêtes sur les <br />
+ # Toutes les adresses IP doivent répondre aux requêtes sur les <br />
# serveurs virtuels<br />
NameVirtualHost *:80<br />
<br />
</VirtualHost>
</example>
- <p>Les astérisques correspondent à toutes les adresses, si bien que
- le serveur principal ne répondra jamais à aucune requête. Comme
+ <p>Les astérisques correspondent à toutes les adresses, si bien que
+ le serveur principal ne répondra jamais à aucune requête. Comme
<code>www.example.com</code> se trouve en premier dans le fichier
- de configuration, il a la plus grande priorité et peut être vu
- comme serveur <cite>par défaut</cite> ou <cite>primaire</cite> ;
- ce qui signifie que toute requête reçue ne correspondant à aucune
+ de configuration, il a la plus grande priorité et peut être vu
+ comme serveur <cite>par défaut</cite> ou <cite>primaire</cite> ;
+ ce qui signifie que toute requête reçue ne correspondant à aucune
des directives <code>ServerName</code> sera servie par ce premier
<code>VirtualHost</code>.</p>
<title>Note :</title>
<p>Si vous le souhaitez, vous pouvez remplacer <code>*</code>
- par l'adresse IP du système. Dans ce cas, l'argument de
- <code>VirtualHost</code> <em>doit</em> correspondre à
+ par l'adresse IP du système. Dans ce cas, l'argument de
+ <code>VirtualHost</code> <em>doit</em> correspondre à
l'argument de <code>NameVirtualHost</code> :</p>
<example>
# etc ...
</example>
- <p>En général, il est commode d'utiliser <code>*</code> sur
- les systèmes dont l'adresse IP n'est pas constante - par
- exemple, pour des serveurs dont l'adresse IP est attribuée
- dynamiquement par le FAI, et où le DNS est géré au moyen
+ <p>En général, il est commode d'utiliser <code>*</code> sur
+ les systèmes dont l'adresse IP n'est pas constante - par
+ exemple, pour des serveurs dont l'adresse IP est attribuée
+ dynamiquement par le FAI, et où le DNS est géré au moyen
d'un DNS dynamique quelconque. Comme <code>*</code> signifie
<cite>n'importe quelle adresse</cite>, cette configuration
- fonctionne sans devoir être modifiée quand l'adresse IP du
- système est modifiée.</p>
+ fonctionne sans devoir être modifiée quand l'adresse IP du
+ système est modifiée.</p>
</note>
- <p>La configuration ci-dessus est en pratique utilisée dans la
+ <p>La configuration ci-dessus est en pratique utilisée dans la
plupart des cas pour les serveurs virtuels par nom. En fait, le
- seul cas où cette configuration ne fonctionne pas est lorsque
- différents contenus doivent être servis en fonction de l'adresse IP
- et du port contactés par le client.</p>
+ seul cas où cette configuration ne fonctionne pas est lorsque
+ différents contenus doivent être servis en fonction de l'adresse IP
+ et du port contactés par le client.</p>
</section>
d'une seule adresse IP.</title>
<note>
- <title>Note :</title><p>Toutes les techniques présentées ici
- peuvent être étendues à un plus grand nombre d'adresses IP.</p>
+ <title>Note :</title><p>Toutes les techniques présentées ici
+ peuvent être étendues à un plus grand nombre d'adresses IP.</p>
</note>
<p>Le serveur a deux adresses IP. Sur l'une
(<code>172.20.30.40</code>), le serveur "principal"
- <code>server.domain.com</code> doit répondre, et sur l'autre
+ <code>server.domain.com</code> doit répondre, et sur l'autre
(<code>172.20.30.50</code>), deux serveurs virtuels (ou plus)
- répondront.</p>
+ répondront.</p>
<example>
<title>Configuration du serveur</title>
</VirtualHost>
</example>
- <p>Toute requête arrivant sur une autre adresse que
+ <p>Toute requête arrivant sur une autre adresse que
<code>172.20.30.50</code> sera servie par le serveur principal.
- Les requêtes vers <code>172.20.30.50</code> avec un nom de serveur
- inconnu, ou sans en-tête <code>Host:</code>, seront servies par
+ Les requêtes vers <code>172.20.30.50</code> avec un nom de serveur
+ inconnu, ou sans en-tête <code>Host:</code>, seront servies par
<code>www.example.com</code>.</p>
</section>
- <section id="intraextra"><title>Servir le même contenu sur des
- adresses IP différentes (telle qu'une adresse interne et une
+ <section id="intraextra"><title>Servir le même contenu sur des
+ adresses IP différentes (telle qu'une adresse interne et une
externe).</title>
<p>La machine serveur dispose de deux adresses IP
(<code>192.168.1.1</code> et <code>172.20.30.40</code>). Cette
- machine est placée à la fois sur le réseau interne (l'Intranet)
- et le réseau externe (Internet). Sur Internet, le nom
+ machine est placée à la fois sur le réseau interne (l'Intranet)
+ et le réseau externe (Internet). Sur Internet, le nom
<code>server.example.com</code> pointe vers l'adresse externe
- (<code>172.20.30.40</code>), mais sur le réseau interne, ce même
+ (<code>172.20.30.40</code>), mais sur le réseau interne, ce même
nom pointe vers l'adresse interne (<code>192.168.1.1</code>).</p>
- <p>Le serveur peut être configuré pour répondre de la même manière
- aux requêtes internes et externes, au moyen d'une seule section
+ <p>Le serveur peut être configuré pour répondre de la même manière
+ aux requêtes internes et externes, au moyen d'une seule section
<code>VirtualHost</code>.</p>
<example>
</VirtualHost>
</example>
- <p>Ainsi, les requêtes en provenance de chacun des deux réseaux
- seront servies par le même <code>VirtualHost</code>.</p>
+ <p>Ainsi, les requêtes en provenance de chacun des deux réseaux
+ seront servies par le même <code>VirtualHost</code>.</p>
<note>
- <title>Note :</title><p>Sur le réseau interne, il est possible
+ <title>Note :</title><p>Sur le réseau interne, il est possible
d'utiliser le nom raccourci <code>server</code> au lieu du nom
complet <code>server.example.com</code>.</p>
- <p>Notez également que dans l'exemple précédent, vous pouvez
+ <p>Notez également que dans l'exemple précédent, vous pouvez
remplacer la liste des adresses IP par des <code>*</code> afin
- que le serveur réponde de la même manière sur toutes ses
+ que le serveur réponde de la même manière sur toutes ses
adresses.</p>
</note>
</section>
- <section id="port"><title>Servir différents sites sur différents
+ <section id="port"><title>Servir différents sites sur différents
ports.</title>
- <p>Vous disposez de plusieurs domaines pointant sur la même adresse
- IP et vous voulez également servir de multiples ports. Vous y
- parviendrez en définissant les ports dans la directive
+ <p>Vous disposez de plusieurs domaines pointant sur la même adresse
+ IP et vous voulez également servir de multiples ports. Vous y
+ parviendrez en définissant les ports dans la directive
"NameVirtualHost". Si vous tentez d'utiliser <VirtualHost
name:port> sans directive NameVirtualHost name:port, ou tentez
d'utiliser la directive Listen, votre configuration ne fonctionnera
</section>
- <section id="ip"><title>Hébergement virtuel basé sur IP</title>
+ <section id="ip"><title>Hébergement virtuel basé sur IP</title>
<p>Le serveur dispose de deux adresses IP (<code>172.20.30.40</code>
et <code>172.20.30.50</code>) correspondant respectivement aux noms
</VirtualHost>
</example>
- <p>Les requêtes provenant d'adresses non spécifiées dans l'une des
+ <p>Les requêtes provenant d'adresses non spécifiées dans l'une des
directives <code><VirtualHost></code> (comme pour
- <code>localhost</code> par exemple) seront dirigées vers le serveur
+ <code>localhost</code> par exemple) seront dirigées vers le serveur
principal, s'il en existe un.</p>
</section>
- <section id="ipport"><title>Hébergements virtuels mixtes basés sur
+ <section id="ipport"><title>Hébergements virtuels mixtes basés sur
les ports et sur les IP</title>
<p>Le serveur dispose de deux adresses IP (<code>172.20.30.40</code>
et <code>172.20.30.50</code>) correspondant respectivement aux noms
<code>www.example.com</code> et <code>www.example.org</code>.
- Pour chacun d'eux, nous voulons un hébergement sur les ports 80
+ Pour chacun d'eux, nous voulons un hébergement sur les ports 80
et 8080.</p>
<example>
</section>
- <section id="mixed"><title>Hébergements virtuels mixtes basé sur
+ <section id="mixed"><title>Hébergements virtuels mixtes basé sur
les noms et sur IP</title>
- <p>Pour certaines adresses, des serveurs virtuels seront définis
- par nom, et pour d'autres, ils seront définis par IP.</p>
+ <p>Pour certaines adresses, des serveurs virtuels seront définis
+ par nom, et pour d'autres, ils seront définis par IP.</p>
<example>
<title>Configuration du serveur</title>
</section>
- <section id="proxy"><title>Utilisation simultanée de
+ <section id="proxy"><title>Utilisation simultanée de
<code>Virtual_host</code> et de mod_proxy</title>
<p>L'exemple suivant montre comment une machine peut mandater
un serveur virtuel fonctionnant sur le serveur d'une autre machine.
- Dans cet exemple, un serveur virtuel de même nom est configuré sur
- une machine à l'adresse <code>192.168.111.2</code>. La directive
+ Dans cet exemple, un serveur virtuel de même nom est configuré sur
+ une machine à l'adresse <code>192.168.111.2</code>. La directive
<directive module="mod_proxy"
name="ProxyPreserveHost">ProxyPreserveHost On</directive> est
- employée pour permettre au nom de domaine d'être préservé lors du
- transfert, au cas où plusieurs noms de domaines cohabitent sur
- une même machine.</p>
+ employée pour permettre au nom de domaine d'être préservé lors du
+ transfert, au cas où plusieurs noms de domaines cohabitent sur
+ une même machine.</p>
<example>
<VirtualHost *:*><br />
<section id="defaultallports"><title>Serveurs virtuels
<code>_default_</code> pour tous les ports</title>
- <p>Exemple de capture de <em>toutes</em> les requêtes émanant
- d'adresses IP ou de ports non connus, <em>c'est-à-dire</em>, d'un
- couple adresse/port non traité par aucun autre serveur virtuel.</p>
+ <p>Exemple de capture de <em>toutes</em> les requêtes émanant
+ d'adresses IP ou de ports non connus, <em>c'est-à-dire</em>, d'un
+ couple adresse/port non traité par aucun autre serveur virtuel.</p>
<example>
<title>Configuration du serveur</title>
</example>
<p>L'utilisation d'un tel serveur virtuel avec un joker pour le
- port empêche de manière efficace qu'une requête n'atteigne le
+ port empêche de manière efficace qu'une requête n'atteigne le
serveur principal.</p>
- <p>Un serveur virtuel par défaut ne servira jamais une requête
- qui est envoyée vers un couple adresse/port utilisée par un
- serveur virtuel par nom. Si la requête contient un en-tête
+ <p>Un serveur virtuel par défaut ne servira jamais une requête
+ qui est envoyée vers un couple adresse/port utilisée par un
+ serveur virtuel par nom. Si la requête contient un en-tête
<code>Host:</code> inconnu, ou si celui-ci est absent, elle
sera toujours servie par le serveur virtuel primaire par nom
- (celui correspondant à ce couple adresse/port trouvé en premier
+ (celui correspondant à ce couple adresse/port trouvé en premier
dans le fichier de configuration).</p>
<p>Vous pouvez utiliser une directive
<directive module="mod_alias">AliasMatch</directive> ou
<directive module="mod_rewrite">RewriteRule</directive> afin de
- réécrire une requête pour une unique page d'information (ou pour
+ réécrire une requête pour une unique page d'information (ou pour
un script).</p>
</section>
<section id="defaultdifferentports"><title>Serveurs virtuels
- <code>_default_</code> pour des ports différents</title>
+ <code>_default_</code> pour des ports différents</title>
- <p>La configuration est similaire à l'exemple précédent, mais
- le serveur écoute sur plusieurs ports et un second serveur virtuel
- <code>_default_</code> pour le port 80 est ajouté.</p>
+ <p>La configuration est similaire à l'exemple précédent, mais
+ le serveur écoute sur plusieurs ports et un second serveur virtuel
+ <code>_default_</code> pour le port 80 est ajouté.</p>
<example>
<title>Configuration du serveur</title>
</VirtualHost>
</example>
- <p>Le serveur virtuel par défaut défini pour le port 80 (il doit
- impérativement être placé avant un autre serveur virtuel par
- défaut traitant tous les ports grâce au joker *) capture toutes
- les requêtes envoyées sur une adresse IP non spécifiée. Le
- serveur principal n'est jamais utilisé pour servir une requête.</p>
+ <p>Le serveur virtuel par défaut défini pour le port 80 (il doit
+ impérativement être placé avant un autre serveur virtuel par
+ défaut traitant tous les ports grâce au joker *) capture toutes
+ les requêtes envoyées sur une adresse IP non spécifiée. Le
+ serveur principal n'est jamais utilisé pour servir une requête.</p>
</section>
<section id="defaultoneport"><title>Serveurs virtuels
<code>_default_</code> pour un seul port</title>
- <p>Nous voulons créer un serveur virtuel par défaut seulement
+ <p>Nous voulons créer un serveur virtuel par défaut seulement
pour le port 80.</p>
<example>
</VirtualHost>
</example>
- <p>Une requête vers une adresse non spécifiée sur le port 80
- sera servie par le serveur virtuel par défaut, et toute autre
- requête vers une adresse et un port non spécifiés sera servie
+ <p>Une requête vers une adresse non spécifiée sur le port 80
+ sera servie par le serveur virtuel par défaut, et toute autre
+ requête vers une adresse et un port non spécifiés sera servie
par le serveur principal.</p>
</section>
<p>Le serveur virtuel par nom avec le nom de domaine
<code>www.example.org</code> (de notre <a href="#name">exemple
par nom</a>) devrait obtenir sa propre adresse IP. Pendant la
- phase de migration, il est possible d'éviter les problèmes avec
- les noms de serveurs et autres serveurs mandataires qui mémorisent
+ phase de migration, il est possible d'éviter les problèmes avec
+ les noms de serveurs et autres serveurs mandataires qui mémorisent
les vielles adresses IP pour les serveurs virtuels par nom.<br />
La solution est simple, car il suffit d'ajouter la nouvelle
adresse IP (<code>172.20.30.50</code>) dans la directive
</VirtualHost>
</example>
- <p>Le serveur virtuel peut maintenant être joint par la nouvelle
+ <p>Le serveur virtuel peut maintenant être joint par la nouvelle
adresse (comme un serveur virtuel par IP) et par l'ancienne
adresse (comme un serveur virtuel par nom).</p>
<section id="serverpath"><title>Utilisation de la directive
<code>ServerPath</code></title>
- <p>Dans le cas où vous disposez de deux serveurs virtuels par nom,
- le client doit transmettre un en-tête <code>Host:</code> correct
- pour déterminer le serveur concerné. Les vieux clients HTTP/1.0
- n'envoient pas un tel en-tête et Apache n'a aucun indice pour
- connaître le serveur virtuel devant être joint (il sert la
- requête à partir d'un serveur virtuel primaire). Dans un soucis
- de préserver la compatibilité descendante, il suffit de créer
- un serveur virtuel primaire chargé de retourner une page contenant
- des liens dont les URLs auront un préfixe identifiant les serveurs
+ <p>Dans le cas où vous disposez de deux serveurs virtuels par nom,
+ le client doit transmettre un en-tête <code>Host:</code> correct
+ pour déterminer le serveur concerné. Les vieux clients HTTP/1.0
+ n'envoient pas un tel en-tête et Apache n'a aucun indice pour
+ connaître le serveur virtuel devant être joint (il sert la
+ requête à partir d'un serveur virtuel primaire). Dans un soucis
+ de préserver la compatibilité descendante, il suffit de créer
+ un serveur virtuel primaire chargé de retourner une page contenant
+ des liens dont les URLs auront un préfixe identifiant les serveurs
virtuels par nom.</p>
<example>
</VirtualHost>
</example>
- <p>À cause de la directive
- <directive module="core">ServerPath</directive>, une requête sur
+ <p>À cause de la directive
+ <directive module="core">ServerPath</directive>, une requête sur
une URL <code>http://www.sub1.domain.tld/sub1/</code> est
<em>toujours</em> servie par le serveur sub1-vhost.<br />
- Une requête sur une URL <code>http://www.sub1.domain.tld/</code> n'est
- servie par le serveur sub1-vhost que si le client envoie un en-tête
- <code>Host:</code> correct. Si aucun en-tête <code>Host:</code>
- n'est transmis, le serveur primaire sera utilisé.</p>
- <p>Notez qu'il y a une singularité : une requête sur
- <code>http://www.sub2.domain.tld/sub1/</code> est également servie
- par le serveur sub1-vhost si le client n'envoie pas d'en-tête
+ Une requête sur une URL <code>http://www.sub1.domain.tld/</code> n'est
+ servie par le serveur sub1-vhost que si le client envoie un en-tête
+ <code>Host:</code> correct. Si aucun en-tête <code>Host:</code>
+ n'est transmis, le serveur primaire sera utilisé.</p>
+ <p>Notez qu'il y a une singularité : une requête sur
+ <code>http://www.sub2.domain.tld/sub1/</code> est également servie
+ par le serveur sub1-vhost si le client n'envoie pas d'en-tête
<code>Host:</code>.</p>
<p>Les directives <directive module="mod_rewrite">RewriteRule</directive>
- sont employées pour s'assurer que le client qui envoie un en-tête
+ sont employées pour s'assurer que le client qui envoie un en-tête
<code>Host:</code> correct puisse utiliser d'autres variantes d'URLs,
- <em>c'est-à-dire</em> avec ou sans préfixe d'URL.</p>
+ <em>c'est-à-dire</em> avec ou sans préfixe d'URL.</p>
</section>
-<?xml version='1.0' encoding='ISO-8859-1' ?>
+<?xml version='1.0' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1563423 -->
<summary>
- <p>Quand de nombreux serveurs virtuels sont créés, Apache peut
- dépasser les limites en descripteurs de fichiers ('file descriptors',
- également appelés <cite>gestionnaires de fichiers</cite>) si chacun
+ <p>Quand de nombreux serveurs virtuels sont créés, Apache peut
+ dépasser les limites en descripteurs de fichiers ('file descriptors',
+ également appelés <cite>gestionnaires de fichiers</cite>) si chacun
des serveurs virtuels utilise ses propres fichiers journaux. Le
- nombre total de descripteurs de fichiers utilisés par Apache est
+ nombre total de descripteurs de fichiers utilisés par Apache est
d'un par fichier journal, un pour chacune des autres directives
de fichiers journaux, plus un nombre constant compris entre 10 et 20
- pour son fonctionnement interne. Les systèmes d'exploitation Unix
+ pour son fonctionnement interne. Les systèmes d'exploitation Unix
limitent le nombre de descripteurs de fichiers utilisables par
processus ; une valeur courante pour cette limite est de 64, et
- cette valeur peut le plus souvent être augmentée.</p>
+ cette valeur peut le plus souvent être augmentée.</p>
- <p>Apache tente d'accroître cette valeur limite si nécessaire, mais
+ <p>Apache tente d'accroître cette valeur limite si nécessaire, mais
sans y parvenir dans les cas suivants :</p>
<ol>
- <li>Le système d'exploitation ne permet pas l'utilisation d'appels
- systèmes <code>setrlimit()</code>.</li>
+ <li>Le système d'exploitation ne permet pas l'utilisation d'appels
+ systèmes <code>setrlimit()</code>.</li>
<li>L'appel <code>setrlimit(RLIMIT_NOFILE)</code> ne fonctionne pas
- sur votre système d'exploitation (c'est le cas sous Solaris 2.3).</li>
+ sur votre système d'exploitation (c'est le cas sous Solaris 2.3).</li>
- <li>Le nombre de descripteurs de fichiers nécessaires à Apache
- dépasse la limite physique du matériel.</li>
+ <li>Le nombre de descripteurs de fichiers nécessaires à Apache
+ dépasse la limite physique du matériel.</li>
- <li>Le système impose d'autres limites sur l'utilisation des
+ <li>Le système impose d'autres limites sur l'utilisation des
descripteurs de fichiers, comme par exemple une limite sur les
flux stdio, utilisables uniquement sur les descripteurs de
- fichiers inférieurs à 256. (sous Solaris 2).</li>
+ fichiers inférieurs à 256. (sous Solaris 2).</li>
</ol>
- <p>En cas de problème, Vous pouvez :</p>
+ <p>En cas de problème, Vous pouvez :</p>
<ul>
- <li>Réduire le nombre de fichiers journaux, en ne spécifiant
+ <li>Réduire le nombre de fichiers journaux, en ne spécifiant
aucun fichier journal dans les sections
<directive type="section" module="core">VirtualHost</directive>,
en donc en envoyant les informations aux fichiers journaux du
- serveur principal (Voir <a href="#splitlogs">Éclatement des
+ serveur principal (Voir <a href="#splitlogs">Éclatement des
fichiers journaux</a> ci-dessous pour plus d'informations sur
- cette possibilité).</li>
+ cette possibilité).</li>
<li>
- Dans les cas 1 ou 2 (évoqués ci-dessus), augmentez la limite sur
- les descripteurs de fichiers avant le démarrage d'Apache, au
+ Dans les cas 1 ou 2 (évoqués ci-dessus), augmentez la limite sur
+ les descripteurs de fichiers avant le démarrage d'Apache, au
moyen d'un script comme
<example>
<!-- the document misc/descriptors.xml does not exist yet in 2.1
<p>Veuillez noter que le document
<a href="../misc/descriptors.html">Descripteurs et Apache</a>
- contient plus de détails concernant les problèmes de descripteurs
- de fichiers et comment les résoudre en fonction de votre système
+ contient plus de détails concernant les problèmes de descripteurs
+ de fichiers et comment les résoudre en fonction de votre système
d'exploitation.</p>
-->
</summary>
-<section id="splitlogs"><title>Éclatement des fichiers journaux</title>
+<section id="splitlogs"><title>Éclatement des fichiers journaux</title>
-<p>Lorsque vous choisissez d'enregistrer les informations émanant de
-plusieurs serveurs virtuels dans un même fichier journal, vous voudrez
-ensuite pouvoir scinder ces informations à des fins de statistiques, par
-exemple, sur les différents serveurs virtuels. Il est possible de procéder
-de la manière suivante :</p>
+<p>Lorsque vous choisissez d'enregistrer les informations émanant de
+plusieurs serveurs virtuels dans un même fichier journal, vous voudrez
+ensuite pouvoir scinder ces informations à des fins de statistiques, par
+exemple, sur les différents serveurs virtuels. Il est possible de procéder
+de la manière suivante :</p>
-<p>Tout d'abord, vous devez ajouter le nom du serveur virtuel à chaque
-entrée du journal. Ceci se paramètre au moyen de la directive
+<p>Tout d'abord, vous devez ajouter le nom du serveur virtuel à chaque
+entrée du journal. Ceci se paramètre au moyen de la directive
<directive module="mod_log_config"> LogFormat</directive> et de la
-variable <code>%v</code>. Ajoutez cette variable au début de la chaîne
-de définition du format de journalisations :</p>
+variable <code>%v</code>. Ajoutez cette variable au début de la chaîne
+de définition du format de journalisations :</p>
<example>
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost<br />
CustomLog logs/multiple_vhost_log vhost
</example>
-<p>Cette configuration va provoquer la création d'un fichier de
+<p>Cette configuration va provoquer la création d'un fichier de
journalisation au format standard (CLF : 'Common Log Format'), mais dont
-chaque ligne débutera par le nom canonique du serveur virtuel (spécifié
+chaque ligne débutera par le nom canonique du serveur virtuel (spécifié
par la directive <directive module="core">ServerName</directive>).
(Voir <module>mod_log_config</module> pour d'autres informations sur la
personnalisation des fichiers journaux.)</p>
-<p>Au moment de séparer les informations du fichier journal en un fichier
+<p>Au moment de séparer les informations du fichier journal en un fichier
par serveur virtuel, le programme <code>
-<a href="../programs/other.html">split-logfile</a></code> peut être
-utilisé. Ce programme peut être trouvé dans le répertoire
+<a href="../programs/other.html">split-logfile</a></code> peut être
+utilisé. Ce programme peut être trouvé dans le répertoire
<code>support</code> de la distribution d'Apache.</p>
-<p>Exécutez ce programme au moyen de la commande :</p>
+<p>Exécutez ce programme au moyen de la commande :</p>
<example>
split-logfile < /logs/multiple_vhost_log
</example>
-<p>Une fois exécuté avec le nom du fichier contenant tous les journaux,
-ce programme va générer un fichier pour chacun des serveurs virtuels
-qui apparaît dans le fichier d'entrée. Chaque fichier en sortie est
-nommé <code>nomduserveur.log</code>.</p>
+<p>Une fois exécuté avec le nom du fichier contenant tous les journaux,
+ce programme va générer un fichier pour chacun des serveurs virtuels
+qui apparaît dans le fichier d'entrée. Chaque fichier en sortie est
+nommé <code>nomduserveur.log</code>.</p>
</section>
</manualpage>
-<?xml version='1.0' encoding='ISO-8859-1' ?>
+<?xml version='1.0' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1363767 -->
<summary>
- <p>Le principe des <cite>Serveurs Virtuels</cite> consiste à
+ <p>Le principe des <cite>Serveurs Virtuels</cite> consiste à
faire fonctionner un ou plusieurs serveurs Web (comme
<code>company1.example.com</code> and <code>company2.example.com</code>)
- sur une même machine. Les serveurs virtuels peuvent être soit
- "<a href="ip-based.html">par-IP</a>" où une adresse IP est
- attribuée pour chaque serveur Web, soit "<a href="name-based.html"
- >par-nom</a>" où plusieurs noms de domaine se côtoient sur
- des mêmes adresses IP. L'utilisateur final ne perçoit pas
- qu'en fait il s'agit d'un même serveur physique.</p>
-
- <p>Apache a été le précurseur des serveurs proposant cette
- méthode de serveurs virtuels basés sur les adresses IP. Ses
+ sur une même machine. Les serveurs virtuels peuvent être soit
+ "<a href="ip-based.html">par-IP</a>" où une adresse IP est
+ attribuée pour chaque serveur Web, soit "<a href="name-based.html"
+ >par-nom</a>" où plusieurs noms de domaine se côtoient sur
+ des mêmes adresses IP. L'utilisateur final ne perçoit pas
+ qu'en fait il s'agit d'un même serveur physique.</p>
+
+ <p>Apache a été le précurseur des serveurs proposant cette
+ méthode de serveurs virtuels basés sur les adresses IP. Ses
versions 1.1 et suivantes proposent les deux
- méthodes de serveurs virtuels : par-IP et par-nom. Cette
- deuxième méthode est parfois également appelée <em>host-based</em>
+ méthodes de serveurs virtuels : par-IP et par-nom. Cette
+ deuxième méthode est parfois également appelée <em>host-based</em>
ou <em>serveur virtuel non-IP</em>.</p>
<p>Vous trouverez ci-dessous une liste documentaire qui vous
- expliquera en détails le fonctionnement des serveurs virtuels
+ expliquera en détails le fonctionnement des serveurs virtuels
au sein du serveur HTTP Apache :</p>
</summary>
<seealso><a href="ip-based.html">Serveurs virtuels par-IP</a></seealso>
<seealso><a href="examples.html">Exemples de serveurs virtuels</a></seealso>
<seealso><a href="fd-limits.html">Limites des descripteurs de fichiers</a></seealso>
-<seealso><a href="mass.html">Hébergement virtuel en masse</a></seealso>
-<seealso><a href="details.html">Détails sur les critères de choix du serveur</a></seealso>
+<seealso><a href="mass.html">Hébergement virtuel en masse</a></seealso>
+<seealso><a href="details.html">Détails sur les critères de choix du serveur</a></seealso>
<section id="support"><title>Support des serveurs virtuels</title>
(ou, <em>trop de fichiers journaux</em>)</li>
<li><a href="mass.html">Configuration dynamique en masse de
Serveurs Virtuels</a></li>
- <li><a href="details.html">Explication approfondie des critères
- de sélection d'un Serveur Virtuel</a></li>
+ <li><a href="details.html">Explication approfondie des critères
+ de sélection d'un Serveur Virtuel</a></li>
</ul>
</section>
<li><directive module="core">ServerPath</directive></li>
</ul>
- <p>Pour vérifier et analyser la configuration de vos serveurs
+ <p>Pour vérifier et analyser la configuration de vos serveurs
virtuels, vous pouvez utiliser l'argument <code>-S</code> sur
- la ligne de commande lançant le programme Apache comme ceci :</p>
+ la ligne de commande lançant le programme Apache comme ceci :</p>
<example>
/usr/local/apache2/bin/httpd -S
</example>
- <p>Cette commande affichera dans le détail comment Apache a
- traité son fichier de configuration. Les erreurs de configuration
- peuvent être corrigées par l'examen attentif des adresses IP et
+ <p>Cette commande affichera dans le détail comment Apache a
+ traité son fichier de configuration. Les erreurs de configuration
+ peuvent être corrigées par l'examen attentif des adresses IP et
des noms de serveurs. (Consultez la documentation du programme
<program>httpd</program> pour les autres arguments de la ligne de
commande)</p>
-<?xml version='1.0' encoding='ISO-8859-1' ?>
+<?xml version='1.0' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1363767 -->
<a href="name-based.html">Support Apache des serveurs virtuels par nom</a>
</seealso>
-<section id="explanation"><title>Qu'est-ce que l'hébergement virtuel
-basé sur IP</title>
-<p>L'hébergement virtuel basé sur IP est une méthode permettant
+<section id="explanation"><title>Qu'est-ce que l'hébergement virtuel
+basé sur IP</title>
+<p>L'hébergement virtuel basé sur IP est une méthode permettant
d'appliquer certaines directives en fonction de l'adresse IP et du port
-sur lesquels la requête est reçue. En général, il s'agit de servir
-différents sites web sur des ports ou interfaces différents.</p>
-
-<p>Dans de nombreux cas, l'<a href="name-based.html">hébergement virtuel
-basé sur le nom</a> est plus adapté car il permet à plusieurs serveurs
-virtuels de partager la même adresse/port. Voir le document <a
-href="name-based.html#namevip">Hébergement virtuel basé sur IP ou sur le
-nom</a> pour prendre votre décision.</p>
+sur lesquels la requête est reçue. En général, il s'agit de servir
+différents sites web sur des ports ou interfaces différents.</p>
+
+<p>Dans de nombreux cas, l'<a href="name-based.html">hébergement virtuel
+basé sur le nom</a> est plus adapté car il permet à plusieurs serveurs
+virtuels de partager la même adresse/port. Voir le document <a
+href="name-based.html#namevip">Hébergement virtuel basé sur IP ou sur le
+nom</a> pour prendre votre décision.</p>
</section>
-<section id="requirements"><title>Système requis</title>
+<section id="requirements"><title>Système requis</title>
<p>Comme l'indique le terme <cite>par IP</cite>, le serveur
- <strong>doit disposer de couples adresses IP/port différents pour chaque
- serveur virtuel par IP</strong>. La machine peut posséder
- plusieurs connexions physiques au réseau, ou utiliser des
- interfaces virtuelles qui sont supportées par la plupart des
- systèmes d'exploitation modernes (Consultez la documentation des
- systèmes d'exploitation pour plus de détails, notamment les "alias
+ <strong>doit disposer de couples adresses IP/port différents pour chaque
+ serveur virtuel par IP</strong>. La machine peut posséder
+ plusieurs connexions physiques au réseau, ou utiliser des
+ interfaces virtuelles qui sont supportées par la plupart des
+ systèmes d'exploitation modernes (Consultez la documentation des
+ systèmes d'exploitation pour plus de détails, notamment les "alias
IP" et la commande "ifconfig" pour les activer), et/ou utiliser
plusieurs ports.</p>
<p>Dans la terminologie du serveur HTTP Apache, l'utilisation de
plusieurs ports TCP pour une seule adresse IP se nomme aussi
- hébergement virtuel basé sur IP.</p>
+ hébergement virtuel basé sur IP.</p>
</section>
<section id="howto"><title>Comment configurer Apache</title>
- <p>Il y a deux manières de configurer Apache pour le support de
+ <p>Il y a deux manières de configurer Apache pour le support de
multiples serveurs virtuels. Il suffit soit de faire tourner un
- processus résident <program>httpd</program> pour chaque nom de
- domaine, soit de faire tourner un unique processus résident qui
- gère tous les serveurs virtuels.</p>
+ processus résident <program>httpd</program> pour chaque nom de
+ domaine, soit de faire tourner un unique processus résident qui
+ gère tous les serveurs virtuels.</p>
- <p>Utilisez des processus résidents multiples lorsque :</p>
+ <p>Utilisez des processus résidents multiples lorsque :</p>
<ul>
- <li>il y a des problèmes de répartition de sécurité, tels
+ <li>il y a des problèmes de répartition de sécurité, tels
qu'une entreprise1 ne souhaite que personne d'une entreprise2
- ne puisse lire ses données excepté via le Web. Dans ce cas,
- vous aurez besoin de deux processus résidents, chacun fonctionnant
- avec des paramètres <directive module="mpm_common">User</directive>,
+ ne puisse lire ses données excepté via le Web. Dans ce cas,
+ vous aurez besoin de deux processus résidents, chacun fonctionnant
+ avec des paramètres <directive module="mpm_common">User</directive>,
<directive module="mpm_common">Group</directive>,
<directive module="mpm_common">Listen</directive>, et
- <directive module="core">ServerRoot</directive> différents.</li>
+ <directive module="core">ServerRoot</directive> différents.</li>
- <li>vous disposez suffisamment de mémoire et de
+ <li>vous disposez suffisamment de mémoire et de
<a href="../misc/descriptors.html">descripteurs de fichiers</a>
- pour l'écoute de chaque alias IP de la machine. Il est seulement
+ pour l'écoute de chaque alias IP de la machine. Il est seulement
possible d'appliquer la directive
<directive module="mpm_common">Listen</directive>, soit sur toutes
les adresses avec le joker "*", soit uniquement sur des adresses
- spécifiques. Donc, si vous avez besoin d'écouter une adresse
+ spécifiques. Donc, si vous avez besoin d'écouter une adresse
en particulier, vous devrez le faire pour l'ensemble des
autres adresses (Bien qu'il soit plus simple de lancer un
- processus <program>httpd</program> pour écouter N-1 adresses,
+ processus <program>httpd</program> pour écouter N-1 adresses,
et un autre pour l'adresse restante).</li>
</ul>
- <p>Utilisez un unique processus résident lorsque :</p>
+ <p>Utilisez un unique processus résident lorsque :</p>
<ul>
<li>le partage de la configuration httpd entre les serveurs
virtuels est acceptable.</li>
- <li>la machine assume déjà une grande quantité de requêtes, et
- que l'ajout de processus résidents supplémentaires en affecterait
+ <li>la machine assume déjà une grande quantité de requêtes, et
+ que l'ajout de processus résidents supplémentaires en affecterait
les performances.</li>
</ul>
<section id="multiple"><title>Configuration de processus multiples</title>
- <p>Créez une installation indépendante du programme
+ <p>Créez une installation indépendante du programme
<program>httpd</program> pour chaque serveur virtuel. Pour
chacune d'elle, utilisez la directive
<directive module="mpm_common">Listen</directive> dans le fichier
- de configuration pour définir l'adresse IP (ou serveur virtuel)
- que le processus résident doit gérer. Par exemple :</p>
+ de configuration pour définir l'adresse IP (ou serveur virtuel)
+ que le processus résident doit gérer. Par exemple :</p>
<example>
Listen 192.168.0.1:80
</example>
- <p>Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
- de domaine (consultez <a href="../dns-caveats.html">Problèmes DNS
+ <p>Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
+ de domaine (consultez <a href="../dns-caveats.html">Problèmes DNS
avec Apache</a>).</p>
</section>
<section id="single"><title>Configuration d'un unique processus
-résident pour des serveurs virtuels</title>
+résident pour des serveurs virtuels</title>
- <p>Dans ce cas, un unique processus httpd va gérer les requêtes
+ <p>Dans ce cas, un unique processus httpd va gérer les requêtes
pour le serveur principal et tous les serveurs virtuels. Dans le
fichier de configuration, la directive
- <directive module="core">VirtualHost</directive> va servir à
- définir les autres directives
+ <directive module="core">VirtualHost</directive> va servir à
+ définir les autres directives
<directive module="core">ServerAdmin</directive>,
<directive module="core">ServerName</directive>,
<directive module="core">DocumentRoot</directive>,
<directive module="core">ErrorLog</directive> et
<directive module="mod_log_config">TransferLog</directive> ou
<directive module="mod_log_config">CustomLog</directive> avec des
- valeurs différentes pour chaque serveur virtuel. Par exemple :</p>
+ valeurs différentes pour chaque serveur virtuel. Par exemple :</p>
<example>
<VirtualHost 192.168.0.1:80><br />
</VirtualHost>
</example>
- <p>Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
- de domaine dans la définition du <VirtualHost> (consultez <a
- href="../dns-caveats.html">Problèmes DNS avec Apache</a>).</p>
+ <p>Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
+ de domaine dans la définition du <VirtualHost> (consultez <a
+ href="../dns-caveats.html">Problèmes DNS avec Apache</a>).</p>
<p>Les adresses IP et ports explicites l'emportent sur leurs
- équivalents avec caractères génériques, et tout serveur virtuel qui
- correspond à la requête l'emporte sur la configuration du serveur de
+ équivalents avec caractères génériques, et tout serveur virtuel qui
+ correspond à la requête l'emporte sur la configuration du serveur de
base.</p>
<p>Presque <strong>toutes</strong> les directives de configuration
- peuvent être employées dans une directive VirtualHost, à l'exception
- des directives qui contrôlent la création du processus et de
- quelques autres. Pour connaître celles utilisables dans une
- directive VirtualHost, vérifiez leur
+ peuvent être employées dans une directive VirtualHost, à l'exception
+ des directives qui contrôlent la création du processus et de
+ quelques autres. Pour connaître celles utilisables dans une
+ directive VirtualHost, vérifiez leur
<a href="../mod/directive-dict.html#Context">Contexte</a> en utilisant
l'<a href="../mod/directives.html">Index des directives</a>.</p>
<!--
<p>Les directives <directive module="mpm_common">User</directive> et
- <directive module="mpm_common">Group</directive> NE doivent PLUS être
- utilisées à l'intérieur d'une directive VirtualHost lors d'une
- <a href="../suexec.html">exécution sous suEXEC</a>. Voir la directive
- <a href="../mod/mod_suexec.html/#suexecusergroup">SuexecUserGroup</a> définie
+ <directive module="mpm_common">Group</directive> NE doivent PLUS être
+ utilisées à l'intérieur d'une directive VirtualHost lors d'une
+ <a href="../suexec.html">exécution sous suEXEC</a>. Voir la directive
+ <a href="../mod/mod_suexec.html/#suexecusergroup">SuexecUserGroup</a> définie
en remplacement depuis la version 2.0.</p>
-->
- <p><directive module="mod_suexec">SuexecUserGroup</directive> peut être
- utilisées à l'intérieur d'une directive VirtualHost si l'exécution se fait
+ <p><directive module="mod_suexec">SuexecUserGroup</directive> peut être
+ utilisées à l'intérieur d'une directive VirtualHost si l'exécution se fait
sous suEXEC. (Voir <a href="../suexec.html">suEXEC</a>).</p>
- <p><em>SÉCURITÉ :</em> lorsque vous spécifiez où écrire les
+ <p><em>SÉCURITÉ :</em> lorsque vous spécifiez où écrire les
fichiers journaux, soyez attentif aux risques si quelqu'un d'autre
- que celui qui a démarré Apache dispose des droits d'écriture
+ que celui qui a démarré Apache dispose des droits d'écriture
sur l'emplacement de ces fichiers. Consultez les
- <a href="../misc/security_tips.html">Conseils sur la sécurité</a>
- pour plus de détails.</p>
+ <a href="../misc/security_tips.html">Conseils sur la sécurité</a>
+ pour plus de détails.</p>
</section>
</manualpage>
-<?xml version='1.0' encoding='ISO-8859-1' ?>
+<?xml version='1.0' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1344679 -->
<title>Support Apache des serveurs virtuels par nom</title>
<summary>
- <p>Ce document décrit quand et comment utiliser des serveurs
+ <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="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 serveur.
- Avec un hébergement
+ <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 serveur.
+ 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>
+ 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,
+ <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, sauf dans le cas où vous utiliseriez des équipements qui
- nécessitent un hébergement basé sur IP. Les raisons historiques de
- l'hébergement basé sur IP dans un but de support de certains clients ne
- s'appliquent plus à un serveur web d'usage général, sauf si vous
+ ces domaines. Il réduit aussi la pénurie en adresses IP. Par
+ conséquent, vous devriez utiliser l'hébergement virtuel par
+ nom, sauf dans le cas où vous utiliseriez des équipements qui
+ nécessitent un hébergement basé sur IP. Les raisons historiques de
+ l'hébergement basé sur IP dans un but de support de certains clients ne
+ s'appliquent plus à un serveur web d'usage général, sauf si vous
utilisez une version de <module>mod_ssl</module> sans support SNI
(situation standard depuis la version 2.2.12 d'Apache).</p>
</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
+ 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,
+ 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
+ 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">Définition des adresses et ports qu'utilise
+ pas à faire écouter le serveur sur cette IP. Consultez
+ <a href="../bind.html">Définition des adresses et ports qu'utilise
Apache</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>
+ 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
+ <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
+ 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
+ doit être le même que celui de la directive
<directive module="core">NameVirtualHost</directive>
- (dans le cas présent "*:80"). Dans chaque section
+ (dans le cas présent "*:80"). 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
+ 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
+ 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
+ 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>
+ pour en faire le serveur par défaut.</p>
</note>
- <p>Par exemple, supposez que vous hébergez le domaine
+ <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>
+ la même adresse IP. Il vous suffit d'ajouter la configuration
+ suivante à <code>httpd.conf</code> :</p>
<example>
NameVirtualHost *:80<br />
</VirtualHost><br />
</example>
- <p>Autrement, vous pouvez spécifiez une adresse IP explicite
- à la place de <code>*</code> dans les deux directives
+ <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
+ 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
+ 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 :</p>
+ indique aux utilisateurs les autres noms permis pour accéder au
+ même site Web :</p>
<example>
ServerAlias domain.tld *.domain.tld
</example>
- <p>ainsi, toutes les requêtes portant sur un domaine
+ <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.
+ <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>
+ doit être correctement configuré pour lier ces noms à une
+ adresse IP associée avec votre serveur.</p>
- <p>La liste complète des noms dans la section <directive
- module="core">VirtualHost</directive> sont traités comme une
+ <p>La liste complète des noms dans la section <directive
+ module="core">VirtualHost</directive> sont traités comme une
directive <directive module="core">ServerAlias</directive> sans
- caractères génériques.</p>
+ caractères génériques.</p>
<p>Finalement, vous pouvez affiner la configuration des serveurs
- virtuels en plaçant d'autres directives à l'intérieur des sections
+ 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,
+ 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 le <a
href="../mod/directive-dict.html#Context">contexte</a> de la
- directive. Le jeu de directives configurées dans le contexte
+ directive. 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
+ 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 à
+ <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 à
+ 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>
+ 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>par défaut</em>. La directive
+ <p>En conséquence, le premier serveur virtuel listé est le
+ serveur virtuel <em>par défaut</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 à la directive
+ <strong>jamais</strong> employée lorsqu'une adresse IP
+ correspond à la directive
<directive module="core">NameVirtualHost</directive>. Si vous
- souhaitez avoir une configuration spéciale pour les requêtes
- qui ne correspondent pas à un serveur virtuel en particulier,
+ souhaitez avoir une configuration spéciale pour les requêtes
+ qui ne correspondent pas à 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>
+<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
+ <p>Comme mentionné plus tôt, certains clients ne transmettent
+ pas les données nécessaires pour le bon fonctionnement des
serveurs virtuels par nom. Ces clients recevront toujours les pages
- du premier serveur virtuel listé pour cette adresse IP (le
+ du premier serveur virtuel listé pour cette adresse IP (le
serveur virtuel par nom <cite>primaire</cite>).</p>
<note><title>De combien plus anciens ?</title>
<p>Veuillez noter que quand nous disons plus anciens, nous
disons vraiment plus anciens. Vous avez peu de chances 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>
+ 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 :</p>
+ légèrement complexe :</p>
<p>Exemple de configuration :</p>
</VirtualHost><br />
</example>
- <p>Qu'est-ce que cela signifie ? Il signifie qu'une requête
+ <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 à
+ 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 à
+ 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
pages de ce serveur virtuel, assurez vous de 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>,
+ 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
+ cette ligne de conduite, vous serez assuré que vos pages
s'afficheront dans tous les navigateurs, nouveaux et anciens.</p>
</section>