Serveur Apache HTTP Version 2.4
Ce document d�crit quand et comment utiliser des serveurs virtuels par nom.
Les serveurs 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'appuie 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.
La s�lection du serveur virtuel en fonction du nom s'op�re en dehors de l'algorithme de s�lection du serveur virtuel en fonction de l'adresse IP, ce qui signifie que les recherches du point de vue du nom du serveur ne s'effectuent que parmi le jeu de serveurs virtuels pour lesquels la correspondance avec la paire adresse IP/port est la plus exacte.
Il est important de savoir que la premi�re �tape de la r�solution de serveur virtuel bas�e sur le nom est une r�solution bas�e sur IP. La r�solution de serveur virtuel bas�e sur le nom ne fait que choisir le serveur virtuel bas� sur le nom le plus appropri�, en se limitant aux candidats qui conviennent le mieux du point de vue IP. La r�solution bas�e sur IP est sans objet si l'on utilise un caract�re g�n�rique (*) pour l'adresse IP dans toutes les directives VirtualHost.
A l'arriv�e d'une requ�te, le serveur va rechercher l'argument de
section <VirtualHost>
pr�sentant la meilleure
(la plus exacte) correspondance avec la paire adresse IP/port
utilis�e dans la requ�te. Si plusieurs serveurs virtuels poss�dent
cette m�me paire adresse IP/port, Apache va ensuite comparer les
valeurs des directives ServerName
et module="core">ServerAlias
avec le nom de serveur
pr�sent dans la requ�te.
Si aucune directive ServerName ou ServerAlias ne correspond dans la liste de serveurs virtuels pr�sentant la meilleure correspondance du point de vue adresse IP/port, c'est le premier serveur virtuel de cette liste qui sera utilis�.
Modules Apparent�s | Directives Apparent�es |
---|---|
La premi�re �tape consiste � cr�er une section
<VirtualHost>
pour chacun des serveurs � d�finir. 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.
Toute requ�te qui ne correspond � aucune section <VirtualHost>
existante
est trait�e avec la configuration du serveur principal, sans
tenir compte du nom d'h�te ou de la directive ServerName.
Lorsque vous ajoutez un serveur virtuel bas� sur le nom � un
serveur existant, et si les caract�ristiques de ce serveur
virtuel correspondent � des combinaisons IP/port pr�existantes,
les requ�tes seront alors trait�es par un serveur virtuel
explicite. Dans ce cas, il est en g�n�ral judicieux de cr�er un
serveur virtuel par d�faut
comportant une directive ServerName
correspondant au nom du
serveur principal. De nouveaux domaines sur les m�mes interface
et port, mais n�cessitant des configurations distinctes,
pourront alors �tre ajout�s en tant que serveurs virtuels
sp�cifiques (et non par d�faut).
Il est toujours pr�f�rable de d�finir une directive ServerName
au niveau de chaque serveur
virtuel � base de nom. Si un serveur virtuel ne d�finit pas
de directive ServerName
, le
nom de ce serveur virtuel sera h�rit� du serveur principal. Si
aucun nom de serveur n'a �t� explicitement d�fini au niveau du
serveur principal, le serveur tentera de d�terminer son nom via
une r�solution de nom DNS inverse sur la premi�re adresse
d'�coute. Dans tous les cas, ce nom de serveur h�rit� influencera
la s�lection du serveur virtuel � base de nom, c'est pourquoi il
est toujours pr�f�rable de d�finir une directive ServerName
pour chaque serveur virtuel
� base de nom.
Par exemple, supposez que vous h�bergez le domaine
www.example.com
et que vous souhaitez ajouter le
serveur virtuel other.example.com
qui pointe sur
la m�me adresse IP. Il vous suffit d'ajouter la configuration
suivante � apache2.conf
:
<VirtualHost *:80> # Le premier serveur virtuel de la liste est aussi le # serveur par d�faut pour *:80 ServerName www.example.com ServerAlias example.com DocumentRoot /www/domain </VirtualHost> <VirtualHost *:80> ServerName other.example.com DocumentRoot /www/otherdomain </VirtualHost>
Autrement, vous pouvez sp�cifiez une adresse IP explicite
� la place de *
dans la directive
<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
m�me site Web :
ServerAlias example.com *.example.com
ainsi, toutes les requ�tes portant sur un domaine
example.com
seront servies par le serveur virtuel
www.example.com
. 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 recherche du serveur virtuel � base de nom qui correspond au
plus pr�s � la requ�te s'effectue parmi les <virtualhost>
selon leur
ordre d'apparition dans le fichier de configuration. Le premier
serveur virtuel dont le ServerName
ou le ServerAlias
correspond est utilis�, sans
priorit� particuli�re en cas de pr�sence de caract�res g�n�riques
(que ce soit pour le ServerName ou le ServerAlias).
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,
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
par un serveur virtuel.