From: André Malo 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
+ 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
Si vous voulez juste que ça marche sans en +
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
+ les définitions qui apparaissent en dehors des sections
<VirtualHost>
. Les serveurs virtuels, aussi
- appelés vhosts (pour virtual hosts), sont définis par les
+ appelés vhosts (pour virtual hosts), sont définis par les
sections
Les directives
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
+ défaut pour ServerPath
ni pour ServerAlias
.
+ La valeur par défaut de ServerName
est déduite à partir
de l'adresses IP du serveur.
Les numéros de port spécifiés par la directive
- VirtualHost
n'ont rien à voir avec les ports sur
- lesquels Apache va se mettre en écoute. Ils permettent seulement
- de déterminer quel VirtualHost
devra être
- sélectionné pour traiter la requête.
Les numéros de port spécifiés par la directive
+ VirtualHost
n'ont rien à voir avec les ports sur
+ lesquels Apache va se mettre en écoute. Ils permettent seulement
+ de déterminer quel VirtualHost
devra être
+ sélectionné pour traiter la requête.
Chaque adresse incluse dans une directive VirtualHost
- 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
- *
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
+ *
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.
À moins qu'une directive
-
à moins qu'une directive
+ VirtualHost
, Apache sélectionne le serveur virtuel qui
+ VirtualHost
, 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é.
Si vous souhaitez qu'Apache affine ses critères de
- sélection en faisant entrer en jeu l'en-tête HTTP Host
+
Si vous souhaitez qu'Apache affine ses critères de
+ sélection en faisant entrer en jeu l'en-tête HTTP Host
fourni par le client, la directive NameVirtualHost
doit
- 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
VirtualHost
correspondant.
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 +
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.
+ qui possèdent la même paire adresse IP/port. -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é.
+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é.
On peut utiliser plusieurs directives NameVirtualHost
pour un groupe de directives VirtualHost
, mais seule
- une directive NameVirtualHost
doit être utilisée pour
- chaque couple IP:port donné.
NameVirtualHost
doit être utilisée pour
+ chaque couple IP:port donné.
L'ordre d'apparition des directives NameVirtualHost
et VirtualHost
est sans importance, ce qui fait que
@@ -160,28 +160,28 @@ de configuration
(Il est conseillé d'adopter le choix de gauche pour faciliter - la lisibilité des fichiers de configuration.)
+(Il est conseillé d'adopter le choix de gauche pour faciliter + la lisibilité des fichiers de configuration.)
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 NameVirtualHost
,
+ IP est générée et introduite dans une table de 'hash'. Si une
+ adresse IP est utilisée dans une directive 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.
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.
- 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.
+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 - par défaut. En particulier :
+Pour chaque serveur virtuel, diverses valeurs sont initialisées + par défaut. En particulier :
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.
-Dans le cas où le serveur principal n'a pas de ServerName
- à ce stade, le nom de la machine sur laquelle tourne le programme
-
Dans le cas où le serveur principal n'a pas de ServerName
+ Ã ce stade, le nom de la machine sur laquelle tourne le programme
+ ServerName
+ renvoyées par une résolution DNS sur le ServerName
du serveur principal.
Pour tous les champs ServerName
non définis, dans
+
Pour tous les champs 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.
VirtualHost
qui définit le serveur virtuel.
Si un serveur virtuel contient la valeur magique
- _default_
, il fonctionne sur le même ServerName
+ _default_
, il fonctionne sur le même ServerName
que le serveur principal.
À la réception d'une requête, le serveur procède comme suit pour - déterminer quel serveur virtuel utiliser :
+à la réception d'une requête, le serveur procède comme suit pour + déterminer quel serveur virtuel utiliser :
-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
- _default_
s'il est défini pour le port correspondant
- à la requête. Sinon, elle est servie par le serveur principal.
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
+ _default_
s'il est défini pour le port correspondant
+ à la requête. Sinon, elle est servie par le serveur principal.
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 NameVirtualHost *
qui est géré
+
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 NameVirtualHost *
qui est géré
ensuite comme les autres serveurs virtuels par noms.
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 +
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.
+ 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, +
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 VirtualHost
+ virtuels. Les serveurs virtuels se présentent dans cette liste
+ dans le même ordre que la lecture des directives VirtualHost
dans le fichier de configuration.
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
- Host:
dans l'en-tête.
Si un champ 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
+ 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
+ Host:
dans l'en-tête.
Si un champ 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.
La liste complète des noms dans la section
- VirtualHost
sont traités comme un
- ServerAlias
sans caractères génériques (mais ne sont
- pas écrasés par une directive ServerAlias
).
Dans le cas où le client a envoyé une requête en HTTP/1.0 sans
- champ d'en-tê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
+ 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.
La liste complète des noms dans la section
+ VirtualHost
sont traités comme un
+ ServerAlias
sans caractères génériques (mais ne sont
+ pas écrasés par une directive ServerAlias
).
Dans le cas où le client a envoyé une requête en HTTP/1.0 sans
+ champ d'en-tê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
servie par le serveur virtuel correspondant.
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).
+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 +
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 + 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 + 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 +
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 + 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).
+ n'existe pas, l'URI reste inchangé et la requête est considérée + comme une requête d'un serveur mandataire (proxy).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
+ 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é
+ 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:
- n'a été présenté par le client pour distinguer les deux.)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
+ _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
+ 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 *
. 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._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_
+ 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:
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 Host:
inconnu ou manquant
+ 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
+ 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
- résolution DNS est nécessaire pour chaque serveur virtuel.En plus des points évoqués sur la page des - problèmes liés au DNS, - voici quelques points intéressants :
+En plus des points évoqués sur la page des + problèmes liés au DNS, + voici quelques points intéressants :
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 de tous les
serveurs virtuels.)NameVirtualHost
+ NameVirtualHost
et VirtualHost
correspondantes
- 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
+ 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").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 +
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.
@@ -48,20 +48,20 @@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
+ 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
hosts
pour tests locaux, mais qui ne fonctionneront
- que sur la machine possédant ces entrées.
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
www.example.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 à aucune
+ 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 à aucune
des directives ServerName
sera servie par ce premier
VirtualHost
.
Si vous le souhaitez, vous pouvez remplacer *
- 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
:
En général, il est commode d'utiliser *
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
+
En général, il est commode d'utiliser *
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.
La configuration ci-dessus est en pratique utilisée dans la +
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.
+ 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 - peuvent être étendues à un plus grand nombre d'adresses IP.
+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
(172.20.30.40
), le serveur "principal"
- server.domain.com
doit répondre, et sur l'autre
+ server.domain.com
doit répondre, et sur l'autre
(172.20.30.50
), deux serveurs virtuels (ou plus)
- répondront.
Toute requête arrivant sur une autre adresse que +
Toute requête arrivant sur une autre adresse que
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
+ Les requêtes vers 172.20.30.50
avec un nom de serveur
+ inconnu, ou sans en-tête Host:
, seront servies par
www.example.com
.
La machine serveur dispose de deux adresses IP
(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
+ 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
+ (172.20.30.40
), mais sur le réseau interne, ce même
nom pointe vers l'adresse interne (192.168.1.1
).
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
VirtualHost
.
Ainsi, les requêtes en provenance de chacun des deux réseaux
- seront servies par le même VirtualHost
.
Ainsi, les requêtes en provenance de chacun des deux réseaux
+ seront servies par le même VirtualHost
.
Sur le réseau interne, il est possible +
Sur le réseau interne, il est possible
d'utiliser le nom raccourci server
au lieu du nom
complet server.example.com
.
Notez également que dans l'exemple précédent, vous pouvez +
Notez également que dans l'exemple précédent, vous pouvez
remplacer la liste des adresses IP par des *
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.
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 +
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 @@ -281,7 +281,7 @@
Le serveur dispose de deux adresses IP (172.20.30.40
et 172.20.30.50
) correspondant respectivement aux noms
@@ -307,20 +307,20 @@
</VirtualHost>
-
Les requêtes provenant d'adresses non spécifiées dans l'une des +
Les requêtes provenant d'adresses non spécifiées dans l'une des
directives <VirtualHost>
(comme pour
- localhost
par exemple) seront dirigées vers le serveur
+ localhost
par exemple) seront dirigées vers le serveur
principal, s'il en existe un.
Le serveur dispose de deux adresses IP (172.20.30.40
et 172.20.30.50
) correspondant respectivement aux noms
www.example.com
et www.example.org
.
- 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.
Pour certaines adresses, des serveurs virtuels seront définis - par nom, et pour d'autres, ils seront définis par IP.
+Pour certaines adresses, des serveurs virtuels seront définis + par nom, et pour d'autres, ils seront définis par IP.
Virtual_host
et de mod_proxyL'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 192.168.111.2
. La directive
+ Dans cet exemple, un serveur virtuel de même nom est configuré sur
+ une machine à l'adresse 192.168.111.2
. La directive
_default_
pour tous les portsExemple 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.
+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 + 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
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
+ (celui correspondant à ce couple adresse/port trouvé en premier
dans le fichier de configuration).
Vous pouvez utiliser une directive
_default_
pour des ports différents_default_
pour des ports différentsLa configuration est similaire à l'exemple précédent, mais
- le serveur écoute sur plusieurs ports et un second serveur virtuel
- _default_
pour le port 80 est ajouté.
La configuration est similaire à l'exemple précédent, mais
+ le serveur écoute sur plusieurs ports et un second serveur virtuel
+ _default_
pour le port 80 est ajouté.
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.
+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.
_default_
pour un seul portNous 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
www.example.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
+ 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
@@ -572,7 +572,7 @@
</VirtualHost>
-
Le serveur virtuel peut maintenant être joint par la nouvelle +
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).
@@ -581,15 +581,15 @@ServerPath
Dans le cas où vous disposez de deux serveurs virtuels par nom,
- le client doit transmettre un en-tête 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
+
Dans le cas où vous disposez de deux serveurs virtuels par nom,
+ le client doit transmettre un en-tête 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.
À cause de la directive
-
à cause de la directive
+ 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:
- 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
+ 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
Host:
.
Les directives Host:
correct puisse utiliser d'autres variantes d'URLs,
- c'est-à-dire avec ou sans préfixe d'URL.
Quand de nombreux serveurs virtuels sont créés, Apache peut - dépasser les limites en descripteurs de fichiers ('file descriptors', - également appelés gestionnaires de fichiers) si chacun +
Quand de nombreux serveurs virtuels sont créés, Apache peut + dépasser les limites en descripteurs de fichiers ('file descriptors', + également appelés gestionnaires de fichiers) 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.
+ cette valeur peut le plus souvent être augmentée. -Apache tente d'accroître cette valeur limite si nécessaire, mais +
Apache tente d'accroître cette valeur limite si nécessaire, mais sans y parvenir dans les cas suivants :
setrlimit()
.setrlimit()
.setrlimit(RLIMIT_NOFILE)
ne fonctionne pas
- sur votre système d'exploitation (c'est le cas sous Solaris 2.3).En cas de problème, Vous pouvez :
+En cas de problème, Vous pouvez :
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 :
+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 :
-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 +
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
%v
. Ajoutez cette variable au début de la chaîne
-de définition du format de journalisations :
%v
. Ajoutez cette variable au début de la chaîne
+de définition du format de journalisations :
Cette configuration va provoquer la création d'un fichier de +
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
Au moment de séparer les informations du fichier journal en un fichier +
Au moment de séparer les informations du fichier journal en un fichier
par serveur virtuel, le programme
-split-logfile
peut être
-utilisé. Ce programme peut être trouvé dans le répertoire
+split-logfile peut être
+utilisé. Ce programme peut être trouvé dans le répertoire
support
de la distribution d'Apache.
Exécutez ce programme au moyen de la commande :
+Exécutez ce programme au moyen de la commande :
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é nomduserveur.log
.
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é nomduserveur.log
.
Le principe des Serveurs Virtuels consiste à +
Le principe des Serveurs Virtuels consiste Ã
faire fonctionner un ou plusieurs serveurs Web (comme
company1.example.com
and company2.example.com
)
- sur une même machine. Les serveurs virtuels peuvent être soit
- "par-IP" où une adresse IP est
- attribuée pour chaque serveur Web, soit "par-nom" 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.
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 + "par-IP" où une adresse IP est + attribuée pour chaque serveur Web, soit "par-nom" 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.
+ +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 host-based + méthodes de serveurs virtuels : par-IP et par-nom. Cette + deuxième méthode est parfois également appelée host-based ou serveur virtuel non-IP.
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 :
Pour vérifier et analyser la configuration de vos serveurs +
Pour vérifier et analyser la configuration de vos serveurs
virtuels, vous pouvez utiliser l'argument -S
sur
- la ligne de commande lançant le programme Apache comme ceci :
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 +
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
L'hébergement virtuel basé sur IP est une méthode permettant
+ 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. Dans de nombreux cas, l'hébergement virtuel
-basé sur le nom est plus adapté car il permet à plusieurs serveurs
-virtuels de partager la même adresse/port. Voir le document Hébergement virtuel basé sur IP ou sur le
-nom pour prendre votre décision.
Dans de nombreux cas, l'hébergement virtuel +basé sur le nom est plus adapté car il permet à plusieurs serveurs +virtuels de partager la même adresse/port. Voir le document Hébergement virtuel basé sur IP ou sur le +nom pour prendre votre décision.
Comme l'indique le terme par IP, le serveur - doit disposer de couples adresses IP/port différents pour chaque - serveur virtuel par IP. 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 + doit disposer de couples adresses IP/port différents pour chaque + serveur virtuel par IP. 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.
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.
+ hébergement virtuel basé sur IP.Il y a deux manières de configurer Apache pour le support de +
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
Utilisez des processus résidents multiples lorsque :
+Utilisez des processus résidents multiples lorsque :
Utilisez un unique processus résident lorsque :
+Utilisez un unique processus résident lorsque :
Créez une installation indépendante du programme +
Créez une installation indépendante du programme
Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
- de domaine (consultez Problèmes DNS
+ Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
+ de domaine (consultez Problèmes DNS
avec Apache).
Dans ce cas, un unique processus httpd va gérer les requêtes +
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
-
Il est recommandé d'utiliser une adresse IP plutôt qu'un nom - de domaine dans la définition du <VirtualHost> (consultez Problèmes DNS avec Apache).
+Il est recommandé d'utiliser une adresse IP plutôt qu'un nom + de domaine dans la définition du <VirtualHost> (consultez Problèmes DNS avec Apache).
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.
Presque toutes 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 Contexte en utilisant l'Index des directives.
-SÉCURITÉ : lorsque vous spécifiez où écrire les +
SÃCURITà : 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 - Conseils sur la sécurité - pour plus de détails.
+ Conseils sur la sécurité + pour plus de détails.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 serveur. - Avec un hébergement +
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.
+ 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, +
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
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
*
comme argument de la directive
*:80
. Notez que la simple mention d'une adresse
IP dans une 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
+ vous devez définir au minimum une directive
+
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
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
:
httpd.conf
:
Autrement, vous pouvez spécifiez une adresse IP explicite
- à la place de *
dans les deux directives
+
Autrement, vous pouvez spécifiez une adresse IP explicite
+ Ã la place de *
dans les deux directives
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
domain.tld
seront servies par le serveur virtuel
- www.domain.tld
. Les caractères joker *
- et ?
peuvent être utilisés pour les correspondances.
+ 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 ServerAlias
. Tout d'abord, votre serveur DNS
- doit être correctement configuré pour lier ces noms à une
- adresse IP associée avec votre serveur.
La liste complète des noms dans la section
La liste complète des noms dans la section
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
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 Ã
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é.
En conséquence, le premier serveur virtuel listé est le - serveur virtuel par défaut. La directive +
En conséquence, le premier serveur virtuel listé est le
+ serveur virtuel par défaut. La directive
Comme mentionné plus tôt, certains clients ne transmettent - pas les données nécessaires pour le bon fonctionnement des +
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 primaire).
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
- Host
comme exigé par les serveurs virtuels par nom.
Host
comme exigé par les serveurs virtuels par nom.
Il existe une solution avec la directive
Exemple de configuration :
@@ -267,13 +267,13 @@ </VirtualHost>Qu'est-ce que cela signifie ? Il signifie qu'une requête +
Qu'est-ce que cela signifie ? Il signifie qu'une requête
pour tout URI qui commence par "/domain
" sera
servie par le serveur virtuel www.domain.tld
.
- Ainsi, les pages sont accessibles à
+ 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 à
+ clients, bien que ceux qui transmettent un en-tête
+ Host:
peuvent également y accéder Ã
http://www.domain.tld/
.
Pour rendre cette technique fonctionnelle, mettez un lien
@@ -282,12 +282,12 @@
pages de ce serveur virtuel, assurez vous de n'utiliser que
des liens relatifs (par exemple, "file.html
"
ou "../icons/image.gif
") ou des liens contenant
- le préfixe /domain/
(par exemple,
+ le préfixe /domain/
(par exemple,
"http://www.domain.tld/domain/misc/file.html
"
ou "/domain/misc/file.html
").
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.