<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Serveurs virtuels

Support Apache des serveurs virtuels par nom

Langues Disponibles:  de  |  en  |  fr  |  ja  |  ko  |  tr 

Cette traduction peut �tre p�rim�e. V�rifiez la version anglaise pour les changements r�cents.

Ce document d�crit quand et comment utiliser des serveurs virtuels par nom.

Voir aussi

top

Serveurs virtuels par nom vs. par IP

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.

top

Comment le serveur s�lectionne-t-il le serveur virtuel bas� sur le nom appropri�

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 ServerAlias avec le nom de serveur pr�sent dans la requ�te.

Le serveur virtuel � base de nom par d�faut pour une paire adresse IP/port

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�.

top

Utilisation de serveurs virtuels par nom

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.

Le serveur principal dispara�t

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).

H�rirage du nom de serveur

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.

Langues Disponibles:  de  |  en  |  fr  |  ja  |  ko  |  tr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.