From: Vincent Deffontaines
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 - 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 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.
-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 +
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 @@ -69,58 +69,58 @@
Modules Apparentés | Directives Apparentées |
---|---|
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
- 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
+
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
+ 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
Définition des adresses et ports qu'utilise
- Apache pour plus
- de détails. Par ailleurs, chaque adresse IP spécifiée ici doit
+ Apache 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.
L'étape suivante est la création d'une section
- <VirtualHost>
- pour chacun des serveurs à créer. L'argument de la directive
- <VirtualHost>
- doit être le même que celui de la directive
- NameVirtualHost
- (dans le cas présent "*: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'étape suivante est la création d'une section
+ <VirtualHost>
+ pour chacun des serveurs à créer. L'argument de la directive
+ <VirtualHost>
+ doit être le même que celui de la directive
+ NameVirtualHost
+ (dans le cas présent "*: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.
Si vous ajoutez des serveurs virtuels à un serveur Web
- existant, vous devez également créer une section
- <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
+
Si vous ajoutez des serveurs virtuels à un serveur Web
+ existant, vous devez également créer une section
+ <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.
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
+
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
:
@@ -141,102 +141,102 @@
</VirtualHost>
Autrement, vous pouvez spécifiez une adresse IP explicite
- à la place 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
+
Autrement, vous pouvez spécifiez une adresse IP explicite
+ à la place 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.
Plusieurs serveurs sont accessibles par plus d'un nom. Il
- suffit de placer la directive
- 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
+
Plusieurs serveurs sont accessibles par plus d'un nom. Il
+ suffit de placer la directive
+ 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
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.
- 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
+
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.
+ 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.
La liste complète des noms dans la section VirtualHost
sont traités comme une
directive ServerAlias
sans
caractères génériques.
Finalement, vous pouvez affiner la configuration des serveurs
- virtuels en plaçant d'autres directives à l'intérieur des sections
- <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,
+
Finalement, vous pouvez affiner la configuration des serveurs
+ virtuels en plaçant d'autres directives à l'intérieur des sections
+ <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 le contexte de la
- directive. 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
+ directive. 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.
Maintenant, lorsqu'une requête arrive, le serveur va d'abord
- tester si elle utilise une adresse IP qui correspond à
- 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é
+
Maintenant, lorsqu'une requête arrive, le serveur va d'abord
+ tester si elle utilise une adresse IP qui correspond à
+ 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é.
En conséquence, le premier serveur virtuel listé est le
- serveur virtuel par défaut. La directive
- DocumentRoot
du
- serveur principal ne sera
- jamais employée lorsqu'une adresse IP
- correspond à la directive
- NameVirtualHost
. Si vous
- souhaiter avoir une configuration spéciale pour les requêtes
- qui ne correspondent pas à un serveur virtuel en particulier,
- mettez cette configuration dans une section
- <VirtualHost>
+
En conséquence, le premier serveur virtuel listé est le
+ serveur virtuel par défaut. La directive
+ DocumentRoot
du
+ serveur principal ne sera
+ jamais employée lorsqu'une adresse IP
+ correspond à la directive
+ NameVirtualHost
. Si vous
+ souhaitez avoir une configuration spéciale pour les requêtes
+ qui ne correspondent pas à un serveur virtuel en particulier,
+ mettez cette configuration dans une section
+ <VirtualHost>
que vous placerez en premier dans le fichier de configuration.
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 +
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.
Il existe une solution avec la directive
- ServerPath
, bien que
+
Il existe une solution avec la directive
+ ServerPath
, bien que
légèrement complexe :
Exemple de configuration :
@@ -253,27 +253,27 @@ </VirtualHost>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 à
- http://www.domain.tld/domain/
pour tous les
- clients, bien que ceux qui transmettent un en-tête
- Host:
peuvent également y accéder à
+
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 à
+ 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/
.
Pour rendre cette technique fonctionnelle, mettez un lien
- dans votre serveur virtuel primaire vers
- http://www.domain.tld/domain/
. Ensuite, dans les
- 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,
- "http://www.domain.tld/domain/misc/file.html
"
+
Pour rendre cette technique fonctionnelle, mettez un lien
+ dans votre serveur virtuel primaire vers
+ http://www.domain.tld/domain/
. Ensuite, dans les
+ 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,
+ "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 +
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.