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 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, 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
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
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
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 :
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
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 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
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 à
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
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 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.
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 "/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"
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 s'afficheront dans tous les navigateurs, nouveaux et anciens.