From: Vincent Deffontaines
Le code gérant les serveurs virtuels a été réécrit à partir de
- zéro dans Apache 1.3. 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 NameVirtualHost
- a rendu beaucoup plus facile et plus sûre la configuration des
+
Le code gérant les serveurs virtuels a été réécrit à partir de
+ zéro dans Apache 1.3. 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 NameVirtualHost
+ a rendu beaucoup plus facile et plus sûre la configuration des
serveurs virtuels par rapport aux versions précédant la 1.3.
Si vous voulez juste que ça marche sans en
- comprendre le fonctionnement, voici quelques
+ Si vous voulez juste que ça marche sans en
+ comprendre le fonctionnement, voici quelques
exemples. Un serveur principal (main_server) contient toutes
- les définitions qui apparaissent en dehors des sections
- Un serveur principal (main_server) contient toutes
+ les définitions qui apparaissent en dehors des sections
+ Les directives
@@ -62,55 +60,55 @@ de configuration La valeur par défaut du champ La valeur par défaut du champ La directive Listen associée au serveur principal a deux utilités.
- La première détermine le port réseau sur lequel Apache va écouter.
- La deuxième spécifie le port qui sera utilisé dans les URIs absolus
+ La directive Listen associée au serveur principal a deux utilités.
+ La première détermine le port réseau sur lequel Apache va écouter.
+ La deuxième spécifie le port qui sera utilisé dans les URIs absolus
lors des redirections. À la différence du serveur principal, les ports des serveurs
- virtuels n'affectent pas les ports sur lesquels
+ À la différence du serveur principal, les ports des serveurs
+ virtuels n'affectent pas les ports sur lesquels
Apache se met à l'écoute. Chaque adresse incluse dans une directive Chaque adresse incluse dans une directive À moins qu'une directive
- À moins qu'une directive
+ Dans les cas où l'on souhaite utiliser un serveur virtuel
- par nom, la directive Dans les cas où l'on souhaite utiliser un serveur virtuel
+ par nom, la directive On peut utiliser plusieurs directives On peut utiliser plusieurs directives L'ordre d'apparition des directives L'ordre d'apparition des directives (Il est conseillé d'adopter le choix de gauche pour faciliter
+ (Il est conseillé d'adopter le choix de gauche pour faciliter
la lisibilité des fichiers de configuration.) Après la lecture de la directive Après la lecture de la directive La liste complète des noms d'une directive La liste complète des noms d'une directive 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 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 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
+ 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. Pour chaque serveur virtuel, diverses valeurs sont initialisées
+ Pour chaque serveur virtuel, diverses valeurs sont initialisées
par défaut. En particulier : L'essentiel des valeurs de configuration des serveurs virtuels
+ 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,
+ 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. Dans le cas où le serveur principal n'a pas de Dans le cas où le serveur principal n'a pas de Pour tous les champs Pour tous les champs Si un serveur virtuel contient la valeur magique
- Si un serveur virtuel contient la valeur magique
+ Après que le client se soit connecté, l'adresse
- IP à laquelle le client s'est connecté est recherchée dans la
+ 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. 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
- 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
+ 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 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 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
+
+ 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. 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
+ 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. 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 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 Le premier serveur virtuel de cette liste (donc, le premier
- serveur virtuel attribué à une adresse IP donnée dans le fichier
- de configuration) 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
+ Le premier serveur virtuel de cette liste (donc, le premier
+ serveur virtuel attribué à une adresse IP donnée dans le fichier
+ de configuration) 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
Si un champ Si un champ Dans le cas où le client a envoyé une requête en HTTP/1.0 sans
- un champ d'en-tête Dans le cas où le client a envoyé une requête en HTTP/1.0 sans
+ un champ d'en-tête 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
+ 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). La recherche par adresse IP décrite ci-avant n'est faite
- qu'une fois pour chaque session TCP/IP, alors que la
- recherche par nom est réalisée pour chaque 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
+ La recherche par adresse IP décrite ci-avant n'est faite
+ qu'une fois pour chaque session TCP/IP, alors que la
+ recherche par nom est réalisée pour chaque 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. 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), et 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
+ 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), et 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). En plus des points évoqués sur la page des
- problèmes liés au DNS,
+ En plus des points évoqués sur la page des
+ problèmes liés au DNS,
voici quelques points intéressants : Le but de ce document est d'essayer de répondre aux questions
- les plus répandues sur la configuration des serveurs virtuels.
- 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 par nom
+ Le but de ce document est d'essayer de répondre aux questions
+ les plus répandues sur la configuration des serveurs virtuels.
+ 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 par nom
ou par IP. Votre serveur ne dispose que d'une seule adresse IP, et de
- nombreux alias (CNAMES) pointent vers cette adresse dans le DNS.
- Pour l'exemple, Votre serveur ne dispose que d'une seule adresse IP, et de
+ nombreux alias (CNAMES) pointent vers cette adresse dans le DNS.
+ Pour l'exemple, La configuration de serveurs virtuels
- sous Apache ne provoque pas leur apparition magique dans la
- configuration du DNS. Il faut que leurs noms soient
- 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
- La configuration de serveurs virtuels
+ sous Apache ne provoque pas leur apparition magique dans la
+ configuration du DNS. Il faut que leurs noms soient
+ 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
+ Les astérisques correspondent à toutes les adresses, si bien que
- le serveur principal ne répondra jamais à aucune requête. Comme
- Les astérisques correspondent à toutes les adresses, si bien que
+ le serveur principal ne répondra jamais à aucune requête. Comme
+ Si vous le souhaitez, vous pouvez remplacer Si vous le souhaitez, vous pouvez remplacer En général, il est commode d'utiliser En général, il est commode d'utiliser 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
+ 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. Toutes les techniques présentées ici
+ Toutes les techniques présentées ici
peuvent être étendues à un plus grand nombre d'adresses IP. Le serveur a deux adresses IP. Sur l'une
- ( Le serveur a deux adresses IP. Sur l'une
+ ( Toute requête arrivant sur une autre adresse que
- Toute requête arrivant sur une autre adresse que
+ La machine serveur dispose de deux adresses IP
- ( La machine serveur dispose de deux adresses IP
+ ( 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
+ 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
Ainsi, les requêtes en provenance de chacun des deux réseaux
+ Ainsi, les requêtes en provenance de chacun des deux réseaux
seront servies par le même Sur le réseau interne, il est possible
- d'utiliser le nom raccourci Sur le réseau interne, il est possible
+ d'utiliser le nom raccourci Notez également que dans l'exemple précédent, vous pouvez
- remplacer la liste des adresses IP par des Notez également que dans l'exemple précédent, vous pouvez
+ remplacer la liste des adresses IP par des 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
+ 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
pas. Le serveur dispose de deux adresses IP ( Le serveur dispose de deux adresses IP ( Les requêtes provenant d'adresses non spécifiées dans l'une des
- directives Les requêtes provenant d'adresses non spécifiées dans l'une des
+ directives Le serveur dispose de deux adresses IP ( Le serveur dispose de deux adresses IP ( Pour certaines adresses, des serveurs virtuels seront définis
+ Pour certaines adresses, des serveurs virtuels seront définis
par nom, et pour d'autres, ils seront définis par IP. 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 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 Exemple de capture de toutes les requêtes émanant
- d'adresses IP ou de ports non connus, c'est-à-dire, d'un
+ Exemple de capture de toutes les requêtes émanant
+ d'adresses IP ou de ports non connus, c'est-à-dire, d'un
couple adresse/port non traité par aucun autre serveur virtuel. 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
+ 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
serveur principal. 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
- 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
+ Vous pouvez utiliser une directive
- Vous pouvez utiliser une directive
+ La configuration est similaire à l'exemple précédent, mais
- le serveur écoute sur plusieurs ports et un second serveur virtuel
+ La configuration est similaire à l'exemple précédent, mais
+ le serveur écoute sur plusieurs ports et un second serveur virtuel
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
+ 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. Nous voulons créer un serveur virtuel par défaut seulement
+ Nous voulons créer un serveur virtuel par défaut seulement
pour le port 80. 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
+ 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. Le serveur virtuel par nom avec le nom de domaine
- Le serveur virtuel par nom avec le nom de domaine
+ Le serveur virtuel peut maintenant être joint par la nouvelle
- adresse (comme un serveur virtuel par IP) et par l'ancienne
+ 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). Dans le cas où vous disposez de deux serveurs virtuels par nom,
- le client doit transmettre un en-tête Dans le cas où vous disposez de deux serveurs virtuels par nom,
+ le client doit transmettre un en-tête À cause de la directive
- À cause de la directive
+ Ce document décrit quand et comment utiliser des serveurs
+ Ce document décrit quand et comment utiliser des serveurs
virtuels par nom. Les hébergements virtuels par IP utilisent l'adresse IP
- de la connexion afin de déterminer quel serveur virtuel doit
- répondre. Par conséquent, vous devez disposer d'adresses IP
- différentes pour chaque nom de domaine complet (FQDN) que vous hébergez.
- Avec un hébergement
- virtuel par nom, le serveur s'appuit sur les informations
- transmises par le client dans les en-têtes HTTP de ses requêtes.
- La technique présentée ici vous permet de disposer de serveurs
+ Les hébergements virtuels par IP utilisent l'adresse IP
+ de la connexion afin de déterminer quel serveur virtuel doit
+ répondre. Par conséquent, vous devez disposer d'adresses IP
+ différentes pour chaque nom de domaine complet (FQDN) que vous hébergez.
+ Avec un hébergement
+ virtuel par nom, le serveur s'appuit sur les informations
+ transmises par le client dans les en-têtes HTTP de ses requêtes.
+ La technique présentée ici vous permet de disposer de serveurs
virtuels différents partagés sur une même adresse IP. L'hébergement virtuel par nom est habituellement plus simple,
- car il vous suffit de configurer votre serveur DNS pour que
- chaque domaine pointe sur l'adresse IP dont vous disposez, et de
- configurer votre serveur Apache HTTP afin qu'il reconnaisse
- ces domaines. Il réduit aussi la pénurie en adresses IP. Par
- conséquent, vous devriez utiliser l'hébergement virtuel par
- nom à moins d'avoir une raison spécifique de préférer
- l'hébergement virtuel par IP. Certaines de ces raisons vous
+ L'hébergement virtuel par nom est habituellement plus simple,
+ car il vous suffit de configurer votre serveur DNS pour que
+ chaque domaine pointe sur l'adresse IP dont vous disposez, et de
+ configurer votre serveur Apache HTTP afin qu'il reconnaisse
+ ces domaines. Il réduit aussi la pénurie en adresses IP. Par
+ conséquent, vous devriez utiliser l'hébergement virtuel par
+ nom à moins d'avoir une raison spécifique de préférer
+ l'hébergement virtuel par IP. Certaines de ces raisons vous
sont exposées ci-après : Pour utiliser des serveurs virtuels par nom, vous devez
- désigner l'adresse IP (et si possible le port) sur le serveur
- devant accepter les requêtes pour des domaines. Cette
- configuration utilise la directive
- Pour utiliser des serveurs virtuels par nom, vous devez
+ désigner l'adresse IP (et si possible le port) sur le serveur
+ devant accepter les requêtes pour des domaines. Cette
+ configuration utilise la directive
+ L'étape suivante est la création d'une section
- L'étape suivante est la création d'une section
+ Si vous ajoutez des serveurs virtuels à un serveur Web
- existant, vous devez également créer une section
- Si vous ajoutez des serveurs virtuels à un serveur Web
+ existant, vous devez également créer une section
+ Par exemple, supposez que vous hébergez le domaine
- Par exemple, supposez que vous hébergez le domaine
+ Autrement, vous pouvez spécifiez une adresse IP explicite
- à la place de Autrement, vous pouvez spécifiez une adresse IP explicite
+ à la place de Plusieurs serveurs sont accessibles par plus d'un nom. Il
- suffit de placer la directive
- Plusieurs serveurs sont accessibles par plus d'un nom. Il
+ suffit de placer la directive
+ ainsi, toutes les requêtes portant sur un domaine
- ainsi, toutes les requêtes portant sur un domaine
+ Finalement, vous pouvez affiner la configuration des serveurs
- virtuels en plaçant d'autres directives à l'intérieur des sections
- Finalement, vous pouvez affiner la configuration des serveurs
+ virtuels en plaçant d'autres directives à l'intérieur des sections
+ Maintenant, lorsqu'une requête arrive, le serveur va d'abord
- tester si elle utilise une adresse IP qui correspond à
- Maintenant, lorsqu'une requête arrive, le serveur va d'abord
+ tester si elle utilise une adresse IP qui correspond à
+ En conséquence, le premier serveur virtuel listé est le
- serveur virtuel default. La directive
- En conséquence, le premier serveur virtuel listé est le
+ serveur virtuel default. La directive
+ Comme mentionné plus tôt, certains clients ne transmettent
- pas les données nécessaires pour le bon fonctionnement des
- serveurs virtuels. Ces clients recevront toujours les pages
- du premier serveur virtuel listé pour cette adresse IP (le
+ Comme mentionné plus tôt, certains clients ne transmettent
+ pas les données nécessaires pour le bon fonctionnement des
+ serveurs virtuels. Ces clients recevront toujours les pages
+ du premier serveur virtuel listé pour cette adresse IP (le
serveur virtuel par nom primaire). Veuillez noter que quand nous disons plus anciens, nous
- disons vraiment plus anciens. Vous seriez malchanceux de rencontrer
- de tels navigateurs encore utilisés de nos jours. Toutes les
- versions actuelles des navigateurs transmettent leur en-tête
+ Veuillez noter que quand nous disons plus anciens, nous
+ disons vraiment plus anciens. Vous seriez malchanceux de rencontrer
+ de tels navigateurs encore utilisés de nos jours. Toutes les
+ versions actuelles des navigateurs transmettent leur en-tête
Il existe une solution avec la directive
- Il existe une solution avec la directive
+ Exemple de configuration : Qu'est-ce que cela signifie ? Il signifie qu'une requête
- pour tout URI qui commence par " Qu'est-ce que cela signifie ? Il signifie qu'une requête
+ pour tout URI qui commence par " Pour rendre cette technique fonctionnelle, mettez un lien
- dans votre serveur virtuel primaire vers
- Pour rendre cette technique fonctionnelle, mettez un lien
+ dans votre serveur virtuel primaire vers
+ Cela requiert un peu de discipline, mais si vous suivez
- cette ligne de conduite, vous serez assuré que vos pages
+ Cela requiert un peu de discipline, mais si vous suivez
+ cette ligne de conduite, vous serez assuré que vos pages
s'afficheront dans tous les navigateurs, nouveaux et anciens. Interprétation des fichiers
+
Interprétation des fichiers
+
Interprétation des fichiers
de configuration
- <VirtualHost>
. Les serveurs virtuels, aussi
- appelés vhosts (pour virtual hosts), sont définis par les
+ <VirtualHost>
. Les serveurs virtuels, aussi
+ appelés vhosts (pour virtual hosts), sont définis par les
sections <VirtualHost>
.ServerPath
,
et ServerAlias
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
+ 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).
- Listen
pour le serveur
- principal est de 80. Le serveur principal n'a pas de valeur par
- défaut pour ServerPath
ni pour ServerAlias
.
- La valeur par défaut de ServerName
est déduite à partir
+ Listen
pour le serveur
+ principal est de 80. Le serveur principal n'a pas de valeur par
+ défaut pour ServerPath
ni pour ServerAlias
.
+ La valeur par défaut de ServerName
est déduite à partir
de l'adresses IP du serveur.VirtualHost
- peut disposer d'un port optionnel. Si le port n'est pas précisé, il
- prend par défaut la dernière valeur de Listen
lue dans
- la configuration du serveur principal. Le port particulier
- *
représente un joker qui correspond à tous les ports.
- L'ensemble des adresses (y compris les résultats multiples
- A
issus des requêtes DNS) est appelé jeu
+ VirtualHost
+ peut disposer d'un port optionnel. Si le port n'est pas précisé, il
+ prend par défaut la dernière valeur de Listen
lue dans
+ la configuration du serveur principal. Le port particulier
+ *
représente un joker qui correspond à tous les ports.
+ L'ensemble des adresses (y compris les résultats multiples
+ A
issus des requêtes DNS) est appelé jeu
d'adresses du serveur virtuel.NameVirtualHost
ne soit utilisée
- pour une adresse IP spécifique, le premier serveur virtuel avec
- cette adresse est considéré comme un serveur virtuel par-IP.
+ NameVirtualHost
ne soit utilisée
+ pour une adresse IP spécifique, le premier serveur virtuel avec
+ cette adresse est considéré comme un serveur virtuel par-IP.
L'adresse IP peut également prendre la valeur joker *
.NameVirtualHost
doit
- apparaître avec l'adresse IP choisie. En d'autres termes, vous devez
- spécifier dans votre fichier de configuration l'adresse IP des noms
- de domaine (CNAME) de vos serveurs virtuels par nom au moyen de
+ NameVirtualHost
doit
+ apparaître avec l'adresse IP choisie. En d'autres termes, vous devez
+ spécifier dans votre fichier de configuration l'adresse IP des noms
+ de domaine (CNAME) de vos serveurs virtuels par nom au moyen de
la directive NameVirtualHost
.NameVirtualHost
- pour un groupe de directives VirtualHost
, mais seule
- une directive NameVirtualHost
doit être utilisée pour
+ NameVirtualHost
+ pour un groupe de directives VirtualHost
, mais seule
+ une directive NameVirtualHost
doit être utilisée pour
chaque couple IP:port donné.NameVirtualHost
- et VirtualHost
est sans importance, ce qui fait que
- les deux exemples suivants ont des effets identiques (seul l'ordre
- des directives VirtualHost
pour un jeu
+ NameVirtualHost
+ et VirtualHost
est sans importance, ce qui fait que
+ les deux exemples suivants ont des effets identiques (seul l'ordre
+ des directives VirtualHost
pour un jeu
d'adresses est important, voir ci-dessous) :
-
@@ -159,40 +157,40 @@ de configuration
VirtualHost
, le
- serveur virtuel se voit attribuer une valeur Listen
- par défaut qui est la valeur du port associé au premier nom spécifié
+ VirtualHost
, le
+ serveur virtuel se voit attribuer une valeur Listen
+ par défaut qui est la valeur du port associé au premier nom spécifié
dans sa directive VirtualHost
.VirtualHost
- est gérée exactement comme des ServerAlias
(mais ne
- sont pas écrasés par d'autres ServerAlias
) si tous
- les noms sont résolus dans ce jeu d'adresse. À noter que les états
- Listen
de ce serveur virtuel sont sans incidence sur
+ VirtualHost
+ est gérée exactement comme des ServerAlias
(mais ne
+ sont pas écrasés par d'autres ServerAlias
) si tous
+ les noms sont résolus dans ce jeu d'adresse. À noter que les états
+ Listen
de ce serveur virtuel sont sans incidence sur
les ports attibués au jeu d'adresses.NameVirtualHost
,
- cette liste contient les noms des serveurs virtuels pour cette
- adresse. Si aucun serveur virtuel n'est défini pour cette adresse,
- la directive NameVirtualHost
est ignorée et un message
- est envoyé au journal d'erreurs. Quand un serveur virtuel par IP
+ NameVirtualHost
,
+ cette liste contient les noms des serveurs virtuels pour cette
+ adresse. Si aucun serveur virtuel n'est défini pour cette adresse,
+ la directive NameVirtualHost
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.
-
- ServerAdmin
,
ResourceConfig
,
AccessConfig
,
@@ -200,43 +198,44 @@ de configuration
KeepAliveTimeout
,
KeepAlive
,
MaxKeepAliveRequests
,
+ ReceiveBufferSize
,
ou SendBufferSize
,
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.)ServerName
- à ce stade, le nom de la machine sur laquelle tourne le programme
- httpd
est utilisé à sa place. Nous appellerons
- jeu d'adresses du serveur principal, les adresses IP
- renvoyées par une résolution DNS sur le ServerName
+ ServerName
+ à ce stade, le nom de la machine sur laquelle tourne le programme
+ httpd
est utilisé à sa place. Nous appellerons
+ jeu d'adresses du serveur principal, les adresses IP
+ renvoyées par une résolution DNS sur le ServerName
du serveur principal.ServerName
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
+ ServerName
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
VirtualHost
qui définit le serveur virtuel._default_
, il fonctionne sur le même ServerName
+ _default_
, il fonctionne sur le même ServerName
que le serveur principal.Vérification dans la table de hash
- _default_
s'il est défini pour le port correspondant
+ _default_
s'il est défini pour le port correspondant
à la requête. Sinon, elle est servie par le serveur principal.NameVirtualHost *
qui est géré
+ NameVirtualHost *
qui est géré
ensuite comme les autres serveur virtuels par noms.Serveur virtuel par IP
- Serveur virtuel par nom
- VirtualHost
+ VirtualHost
dans le fichier de configuration.Host:
dans l'en-tête.Host:
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 ServerName
- ou un ServerAlias
correspondant est choisi pour
- servir la requête. Il est possible que le champ Host:
- contienne un numéro de port, mais Apache utilise toujours le
+ Host:
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 ServerName
+ ou un ServerAlias
correspondant est choisi pour
+ servir la requête. Il est possible que le champ Host:
+ contienne un numéro de port, mais Apache utilise toujours le
port sur lequel il a effectivement reçu la requête.Host:
, 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 ServerPath
- existants. Le premier chemin trouvé est utilisé et la requête est
+ Host:
, 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 ServerPath
+ existants. Le premier chemin trouvé est utilisé et la requête est
servie par le serveur virtuel correspondant.Connexions persistantes
- URI absolu
- Observations
-
@@ -424,28 +423,28 @@ de configuration
NameVirtualHost
.ServerAlias
et
- ServerPath
ne sont jamais réalisées pour les
+ ServerAlias
et
+ ServerPath
ne sont jamais réalisées pour les
serveurs virtuels par IP._default_
, les
- serveurs virtuels par nom et par IP, et la directive
- NameVirtualHost
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
+ _default_
, les
+ serveurs virtuels par nom et par IP, et la directive
+ NameVirtualHost
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
arrivant sur son jeu d'adresses IP.Host:
n'est jamais utilisé
- pour les tests de correspondances. Apache ne prend en compte
+ Host:
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.ServerPath
existe, et se
- trouve être préfixe d'une autre directive ServerPath
- 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 Host:
+ ServerPath
existe, et se
+ trouve être préfixe d'une autre directive ServerPath
+ 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 Host:
n'a été présenté par le client pour distinguer les deux.)_default_
ne sert la requête
- que si aucun autre serveur virtuel travaillant sur l'adresse
- IP et 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 _default_
(qui par
- défaut, correspond à Listen
). Un port joker peut
- être spécifié (comme dans _default_:*
)
- pour récupérer les requêtes sur tous les ports ouverts. Ceci
- est également applicable aux serveurs virtuels
+ _default_
ne sert la requête
+ que si aucun autre serveur virtuel travaillant sur l'adresse
+ IP et 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 _default_
(qui par
+ défaut, correspond à Listen
). Un port joker peut
+ être spécifié (comme dans _default_:*
)
+ pour récupérer les requêtes sur tous les ports ouverts. Ceci
+ est également applicable aux serveurs virtuels
NameVirtualHost *
._default_
). 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 _default_
+ _default_
). 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 _default_
correspond au port)._default_
, ni le
- serveur principal ne sont utilisés pour traiter une requête
- avec un champ d'en-tête Host:
manquant ou vide
- lorsque l'adresse (et le port) de connexion correspondent à
- des serveurs virtuels par nom, par exemple, dans une directive
+ _default_
, ni le
+ serveur principal ne sont utilisés pour traiter une requête
+ avec un champ d'en-tête Host:
manquant ou vide
+ lorsque l'adresse (et le port) de connexion correspondent à
+ des serveurs virtuels par nom, par exemple, dans une directive
NameVirtualHost
.VirtualHost
, 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
- disponible ici, ainsi que
+ VirtualHost
, 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
+ disponible ici, ainsi que
les deux points précisés ci-après.ServerName
devrait toujours
- être indiqué pour chaque serveur virtuel. Sans cela, une
+ ServerName
devrait toujours
+ être indiqué pour chaque serveur virtuel. Sans cela, une
résolution DNS est nécessaire pour chaque serveur virtuel.Trucs et astuces
-
-
diff --git a/docs/manual/vhosts/details.xml.meta b/docs/manual/vhosts/details.xml.meta
index e40e0d439f..b1da7c0a05 100644
--- a/docs/manual/vhosts/details.xml.meta
+++ b/docs/manual/vhosts/details.xml.meta
@@ -8,7 +8,7 @@
VirtualHost
.
- (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
+ VirtualHost
.
+ (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 des serveurs virtuels.)NameVirtualHost
- et VirtualHost
dans la configuration pour une
+ NameVirtualHost
+ et VirtualHost
dans la configuration pour une
meilleure lisibilité.ServerPaths
qui sont préfixes
- d'autres ServerPaths
. 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. (par exemple,
+ ServerPaths
qui sont préfixes
+ d'autres ServerPaths
. 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. (par exemple,
"ServerPath /abc" est à spécifier après "ServerPath /abc/def"). Fonctionnement de plusieurs serveurs
+
Fonctionnement de plusieurs serveurs
virtuels par nom sur une seule adresse IP.
Serveurs virtuels par nom sur plus
+
Serveurs virtuels par nom sur plus
d'une seule adresse IP.
Servir le même contenu sur des
- adresses IP différentes (telle qu'une adresse interne et une
+
Servir le même contenu sur des
+ adresses IP différentes (telle qu'une adresse interne et une
externe).
Servir différents sites sur différents
+
Servir différents sites sur différents
ports.
Hébergement virtuel basé sur IP
Hébergements virtuels mixtes basés sur
+
Hébergements virtuels mixtes basés sur
les ports et sur les IP
Hébergements virtuels mixtes basé sur
+
Hébergements virtuels mixtes basé sur
les noms et sur IP
Utilisation simultanée de
+
Utilisation simultanée de
Virtual_host
et de mod_proxy Utilisation de serveurs virtuels
+
Utilisation de serveurs virtuels
_default_
Migration d'un serveur virtuel
+
Migration d'un serveur virtuel
par nom en un serveur virtuel par IP
Utilisation de la directive
+
Utilisation de la directive
ServerPath
Fonctionnement de plusieurs serveurs
+
Fonctionnement de plusieurs serveurs
virtuels par nom sur une seule adresse IP.
- www.example1.com
et
+ www.example1.com
et
www.example2.org
doivent tourner sur cette machine.Note :
hosts
pour tests locaux, mais qui ne fonctionneront
+ Note :
hosts
pour tests locaux, mais qui ne fonctionneront
que sur la machine possédant ces entrées.
Listen 80
- # Toutes les adresses IP doivent répondre aux requêtes sur les
+ # Toutes les adresses IP doivent répondre aux requêtes sur les
# serveurs virtuels
NameVirtualHost *:80
@@ -110,81 +108,82 @@
</VirtualHost>
www.example1.com
se trouve en premier dans le fichier
- de configuration, il a la plus grande priorité et peut être vu
- comme serveur par défaut ou primaire ;
- ce qui signifie que toute requête reçue ne correspondant pas à une
- des directives ServerName
sera servie par ce premier
+ www.example1.com
se trouve en premier dans le fichier
+ de configuration, il a la plus grande priorité et peut être vu
+ comme serveur par défaut ou primaire ;
+ ce qui signifie que toute requête reçue ne correspondant pas à une
+ des directives ServerName
sera servie par ce premier
VirtualHost
.Note :
- *
- par l'adresse IP du système. Dans ce cas, l'argument de
- VirtualHost
doit correspondre à
+ *
+ par l'adresse IP du système. Dans ce cas, l'argument de
+ VirtualHost
doit correspondre à
l'argument de NameVirtualHost
:
NameVirtualHost 172.20.30.40
-
+
<VirtualHost 172.20.30.40>
- # etc ...
+ # etc ...
*
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 *
signifie
- n'importe quelle adresse, cette configuration
- fonctionne sans devoir être modifiée quand l'adresse IP du
+ *
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 *
signifie
+ n'importe quelle adresse, cette configuration
+ fonctionne sans devoir être modifiée quand l'adresse IP du
système est modifiée.Serveurs virtuels par nom sur plus
+
Serveurs virtuels par nom sur plus
d'une seule adresse IP.
- Note :
Note :
+ 172.20.30.40
), le serveur "principal"
- server.domain.com
doit répondre, et sur l'autre
- (172.20.30.50
), deux serveurs virtuels (ou plus)
+ 172.20.30.40
), le serveur "principal"
+ server.domain.com
doit répondre, et sur l'autre
+ (172.20.30.50
), deux serveurs virtuels (ou plus)
répondront.Configuration du serveur
Listen 80
-
+
# Serveur "principal" sur 172.20.30.40
ServerName server.domain.com
DocumentRoot /www/mainserver
-
+
# l'autre adresse
NameVirtualHost 172.20.30.50
-
+
<VirtualHost 172.20.30.50>
DocumentRoot /www/example1
ServerName www.example1.com
-
+
# D'autres directives ici ...
-
+
</VirtualHost>
@@ -199,28 +198,28 @@
</VirtualHost>
172.20.30.50
sera servie par le serveur principal.
- Les requêtes vers 172.20.30.50
avec un nom de serveur
- inconnu, ou sans en-tête Host:
, seront servies par
+ 172.20.30.50
sera servie par le serveur principal.
+ Les requêtes vers 172.20.30.50
avec un nom de serveur
+ inconnu, ou sans en-tête Host:
, seront servies par
www.example1.com
.Servir le même contenu sur des
- adresses IP différentes (telle qu'une adresse interne et une
+
Servir le même contenu sur des
+ adresses IP différentes (telle qu'une adresse interne et une
externe).
- 192.168.1.1
et 172.20.30.40
). Cette
- machine est placée à la fois sur le réseau interne (l'Intranet)
- et le réseau externe (Internet). Sur Internet, le nom
- server.example.com
pointe vers l'adresse externe
- (172.20.30.40
), mais sur le réseau interne, ce même
+ 192.168.1.1
et 172.20.30.40
). Cette
+ machine est placée à la fois sur le réseau interne (l'Intranet)
+ et le réseau externe (Internet). Sur Internet, le nom
+ server.example.com
pointe vers l'adresse externe
+ (172.20.30.40
), mais sur le réseau interne, ce même
nom pointe vers l'adresse interne (192.168.1.1
).VirtualHost
.Configuration du serveur
@@ -238,31 +237,31 @@
</VirtualHost>
VirtualHost
.Note :
server
au lieu du nom
+ Note :
server
au lieu du nom
complet server.example.com
.*
afin
- que le serveur réponde de la même manière sur toutes ses
+ *
afin
+ que le serveur réponde de la même manière sur toutes ses
adresses.Servir différents sites sur différents
+
Servir différents sites sur différents
ports.
- Configuration du serveur
@@ -307,8 +306,8 @@
Hébergement virtuel basé sur IP
- 172.20.30.40
- et 172.20.30.50
) correspondant respectivement aux noms
+ 172.20.30.40
+ et 172.20.30.50
) correspondant respectivement aux noms
www.example1.com
et www.example2.org
.Configuration du serveur
@@ -331,20 +330,20 @@
</VirtualHost>
<VirtualHost>
(comme pour
- localhost
par exemple) seront dirigées vers le serveur
+ <VirtualHost>
(comme pour
+ localhost
par exemple) seront dirigées vers le serveur
principal, s'il en existe un.Hébergements virtuels mixtes basés sur
+
Hébergements virtuels mixtes basés sur
les ports et sur les IP
- 172.20.30.40
- et 172.20.30.50
) correspondant respectivement aux noms
- www.example1.com
et www.example2.org
.
- Pour chacun d'eux, nous voulons un hébergement sur les ports 80
+ 172.20.30.40
+ et 172.20.30.50
) correspondant respectivement aux noms
+ www.example1.com
et www.example2.org
.
+ Pour chacun d'eux, nous voulons un hébergement sur les ports 80
et 8080.Configuration du serveur
@@ -386,10 +385,10 @@
Hébergements virtuels mixtes basé sur
+
Hébergements virtuels mixtes basé sur
les noms et sur IP
- Configuration du serveur
@@ -438,22 +437,22 @@
Utilisation simultanée de
+
Utilisation simultanée de
- Virtual_host
et de mod_proxy192.168.111.2
. La directive
- ProxyPreserveHost On
est
- employée pour permette au nom de domaine d'être préservé lors du
- transfert, au cas où plusieurs noms de domaines cohabitent sur
+ 192.168.111.2
. La directive
+ ProxyPreserveHost On
est
+ employée pour permette au nom de domaine d'être préservé lors du
+ transfert, au cas où plusieurs noms de domaines cohabitent sur
une même machine.
<VirtualHost *:*>
ProxyPreserveHost On
- ProxyPass / http://192.168.111.2
+ ProxyPass / http://192.168.111.2/
ProxyPassReverse / http://192.168.111.2/
ServerName hostname.example.com
</VirtualHost>
@@ -461,14 +460,14 @@
Utilisation de serveurs virtuels
+
Utilisation de serveurs virtuels
- _default_
Serveurs virtuels
+
Serveurs virtuels
- _default_
pour tous les portsConfiguration du serveur
@@ -481,30 +480,30 @@
</VirtualHost>
Host:
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
+ Host:
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
dans le fichier de configuration).AliasMatch
ou
- RewriteRule
afin de
- réécrire une requête pour une unique page d'information (ou pour
+ AliasMatch
ou
+ RewriteRule
afin de
+ réécrire une requête pour une unique page d'information (ou pour
un script).Serveurs virtuels
+
Serveurs virtuels
- _default_
pour des ports différents_default_
pour le port 80 est ajouté.Configuration du serveur
@@ -525,17 +524,17 @@
</VirtualHost>
Serveurs virtuels
+
Serveurs virtuels
- _default_
pour un seul portConfiguration du serveur
@@ -547,25 +546,25 @@
</VirtualHost>
Migration d'un serveur virtuel
+
Migration d'un serveur virtuel
par nom en un serveur virtuel par IP
- www.example2.org
(de notre exemple
- par nom) 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
+ www.example2.org
(de notre exemple
+ par nom) 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
les vielles adresses IP pour les serveurs virtuels par nom.
- La solution est simple, car il suffit d'ajouter la nouvelle
- adresse IP (172.20.30.50
) dans la directive
+ La solution est simple, car il suffit d'ajouter la nouvelle
+ adresse IP (172.20.30.50
) dans la directive
VirtualHost
.Configuration du serveur
@@ -595,24 +594,24 @@
</VirtualHost>
Utilisation de la directive
+
Utilisation de la directive
- ServerPath
Host:
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
+ Host:
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.Configuration du serveur
@@ -653,21 +652,21 @@
</VirtualHost>
ServerPath
, une requête sur
- une URL http://www.sub1.domain.tld/sub1/
est
+ ServerPath
, une requête sur
+ une URL http://www.sub1.domain.tld/sub1/
est
toujours servie par le serveur sub1-vhost.
- Une requête sur une URL http://www.sub1.domain.tld/
n'est
- servie par le serveur sub1-vhost que si le client envoie un en-tête
- Host:
correct. Si aucun en-tête Host:
+ Une requête sur une URL http://www.sub1.domain.tld/
n'est
+ servie par le serveur sub1-vhost que si le client envoie un en-tête
+ Host:
correct. Si aucun en-tête Host:
n'est transmis, le serveur primaire sera utilisé.
- Notez qu'il y a une singularité : une requête sur
- http://www.sub2.domain.tld/sub1/
est également servie
- par le serveur sub1-vhost si le client n'envoie pas d'en-tête
+ Notez qu'il y a une singularité : une requête sur
+ http://www.sub2.domain.tld/sub1/
est également servie
+ par le serveur sub1-vhost si le client n'envoie pas d'en-tête
Host:
.
- Les directives RewriteRule
- sont employées pour s'assurer que le client qui envoie un en-tête
- Host:
correct puisse utiliser d'autres variantes d'URLs,
+ Les directives RewriteRule
+ sont employées pour s'assurer que le client qui envoie un en-tête
+ Host:
correct puisse utiliser d'autres variantes d'URLs,
c'est-à-dire avec ou sans préfixe d'URL. Serveurs virtuels par nom vs. par IP
Serveurs virtuels par nom vs. par IP
-
-
@@ -85,58 +83,57 @@
- Modules Apparentés Directives Apparentées NameVirtualHost
. Dans un
- cas normal où n'importe quelle adresse IP peut être utilisée,
- vous pouvez ajouter *
comme argument de la directive
- NameVirtualHost
. Si vous
- prévoyez d'utiliser de multiples ports (comme l'emploi de SSL),
- vous devriez ajouter le port à cet argument tel que
- *:80
. Notez que la simple mention d'une adresse
- IP dans une directive
- NameVirtualHost
ne suffit
- pas à faire écouter le serveur sur cette IP. Consultez
- la page sur les liaisons pour plus
- de détails. Par ailleurs, chaque adresse IP spécifiée ici doit
+ NameVirtualHost
. Dans un
+ cas normal où n'importe quelle adresse IP peut être utilisée,
+ vous pouvez ajouter *
comme argument de la directive
+ NameVirtualHost
. Si vous
+ prévoyez d'utiliser de multiples ports (comme l'emploi de SSL),
+ vous devriez ajouter le port à cet argument tel que
+ *:80
. Notez que la simple mention d'une adresse
+ IP dans une directive
+ NameVirtualHost
ne suffit
+ pas à faire écouter le serveur sur cette IP. Consultez
+ la page sur les liaisons 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.<VirtualHost>
- pour chacun des serveurs à créer. L'argument de la directive
- <VirtualHost>
- doit être le même que celui de la directive
- NameVirtualHost
- (c'est-à-dire l'adresse IP ou *
pour toutes les
- adresses). Dans chaque section
- <VirtualHost>
,
- vous devez définir au minimum une directive
- ServerName
pour désigner
- le serveur concerné et une directive
- DocumentRoot
pour préciser
+ <VirtualHost>
+ pour chacun des serveurs à créer. L'argument de la directive
+ <VirtualHost>
+ doit correspondre à celui d'une directive
+ NameVirtualHost
+ (dans la plupart des cas, il s'agit de "*:80"). Dans chaque section
+ <VirtualHost>
,
+ vous devez définir au minimum une directive
+ ServerName
pour désigner
+ le serveur concerné et une directive
+ DocumentRoot
pour préciser
l'emplacement sur le système de fichiers du contenu de ce serveur.Le serveur principal disparaît
- <VirtualHost>
- redéfinissant ce serveur existant. Les directives
- ServerName
et
- DocumentRoot
incluses
- dans ce serveur virtuel doivent être les mêmes que pour
- les directives globales
- ServerName
et
- DocumentRoot
. Positionnez
- ce serveur virtuel en premier dans le fichier de configuration
+ <VirtualHost>
+ redéfinissant ce serveur existant. Les directives
+ ServerName
et
+ DocumentRoot
incluses
+ dans ce serveur virtuel doivent être les mêmes que pour
+ les directives globales
+ ServerName
et
+ DocumentRoot
. Positionnez
+ ce serveur virtuel en premier dans le fichier de configuration
pour en faire le serveur par défaut.www.domain.tld
et que vous souhaitez ajouter le
- serveur virtuel www.otherdomain.tld
qui pointe sur
- la même adresse IP. Il vous suffit d'ajouter la configuration
+ www.domain.tld
et que vous souhaitez ajouter le
+ serveur virtuel www.otherdomain.tld
qui pointe sur
+ la même adresse IP. Il vous suffit d'ajouter la configuration
suivante à httpd.conf
:
@@ -157,98 +154,98 @@
</VirtualHost>
*
dans les deux directives
- NameVirtualHost
et
- <VirtualHost>
.
- 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
+ *
dans les deux directives
+ NameVirtualHost
et
+ <VirtualHost>
.
+ 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.ServerAlias
dans une section
- <VirtualHost>
.
- Par exemple, dans la première section
- <VirtualHost>
- ci-dessus, la directive ServerAlias
- indique aux utilisateurs les autres noms permis pour accéder au
+ ServerAlias
dans une section
+ <VirtualHost>
.
+ Par exemple, dans la première section
+ <VirtualHost>
+ ci-dessus, la directive ServerAlias
+ indique aux utilisateurs les autres noms permis pour accéder au
même site Web :
ServerAlias domain.tld *.domain.tld
domain.tld
seront servies par le serveur virtuel
- www.domain.tld
. Les caractères joker *
- et ?
peuvent être utilisés pour les correspondances.
- Bien entendu, vous ne pouvez pas inventer des noms et les placer
- dans une directive ServerName
- ou ServerAlias
. Tout d'abord, votre serveur DNS
- doit être correctement configuré pour lier ces noms à une
+ domain.tld
seront servies par le serveur virtuel
+ www.domain.tld
. Les caractères joker *
+ et ?
peuvent être utilisés pour les correspondances.
+ Bien entendu, vous ne pouvez pas inventer des noms et les placer
+ dans une directive ServerName
+ ou ServerAlias
. Tout d'abord, votre serveur DNS
+ doit être correctement configuré pour lier ces noms à une
adresse IP associée avec votre serveur.<VirtualHost>
.
- 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 la page de
- contexte. Le jeu de directives configurées dans le contexte
- du serveur principal (en dehors de toutes sections
- <VirtualHost>
)
- sera utilisé seulement s'il n'y a pas de configuration contraire
+ <VirtualHost>
.
+ 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 la page de
+ contexte. Le jeu de directives configurées dans le contexte
+ du serveur principal (en dehors de toutes sections
+ <VirtualHost>
)
+ sera utilisé seulement s'il n'y a pas de configuration contraire
par un serveur virtuel.NameVirtualHost
. Si c'est
- le cas, il regardera chaque section
- <VirtualHost>
- avec l'adresse correspondante et essaiera d'en trouver une où
- le nom de domaine requis correspond à
- ServerName
ou
- ServerAlias
. S'il en trouve une, il utilisera
- sa configuration pour le serveur. Si aucun serveur virtuel ne
- correspond, alors le premier serveur virtuel listé
+ NameVirtualHost
. Si c'est
+ le cas, il regardera chaque section
+ <VirtualHost>
+ avec l'adresse correspondante et essaiera d'en trouver une où
+ le nom de domaine requis correspond à
+ ServerName
ou
+ ServerAlias
. S'il en trouve une, il utilisera
+ sa configuration pour le serveur. Si aucun serveur virtuel ne
+ correspond, alors le premier serveur virtuel listé
dont l'adresse IP correspond sera employé.DocumentRoot
du
- serveur principal ne sera
- jamais employée lorsqu'une adresse IP
- correspond dans une directive
- NameVirtualHost
. Si vous
- ne voulez pas avoir de configuration spéciale pour les requêtes
- qui ne sont pas attachées à un serveur virtuel en particulier,
- mettez cette configuration dans une section
- <VirtualHost>
+ DocumentRoot
du
+ serveur principal ne sera
+ jamais employée lorsqu'une adresse IP
+ correspond dans une directive
+ NameVirtualHost
. Si vous
+ ne voulez pas avoir de configuration spéciale pour les requêtes
+ qui ne sont pas attachées à un serveur virtuel en particulier,
+ mettez cette configuration dans une section
+ <VirtualHost>
que vous placerez en premier dans le fichier de configuration.Compatibilité avec les navigateurs anciens
- De combien plus anciens ?
- Host
comme exigé par les serveurs virtuels par nom.ServerPath
, bien que
+ ServerPath
, bien que
légèrement complexe :
/domain
" sera
- servie par le serveur virtuel www.domain.tld
.
- Ainsi, les pages sont accessibles à
- http://www.domain.tld/domain/
pour tous les
- clients, bien que ceux qui transmettent un en-tête
- Host:
peuvent également y accéder à
+ /domain
" sera
+ servie par le serveur virtuel www.domain.tld
.
+ Ainsi, les pages sont accessibles à
+ http://www.domain.tld/domain/
pour tous les
+ clients, bien que ceux qui transmettent un en-tête
+ Host:
peuvent également y accéder à
http://www.domain.tld/
.http://www.domain.tld/domain/
. Ensuite, dans les
- pages de ce serveur virtuel, assurez vous ne n'utiliser que
- des liens relatifs (par exemple, "file.html
"
- ou "../icons/image.gif
") ou des liens contenant
- le préfixe /domain/
(par exemple,
- "http://www.domain.tld/domain/misc/file.html
"
+ http://www.domain.tld/domain/
. Ensuite, dans les
+ pages de ce serveur virtuel, assurez vous ne n'utiliser que
+ des liens relatifs (par exemple, "file.html
"
+ ou "../icons/image.gif
") ou des liens contenant
+ le préfixe /domain/
(par exemple,
+ "http://www.domain.tld/domain/misc/file.html
"
ou "/domain/misc/file.html
").