Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://www.arcetri.astro.it/manual/fr/vhosts/name-based.html
Äàòà èçìåíåíèÿ: Mon Jan 21 19:44:30 2013
Äàòà èíäåêñèðîâàíèÿ: Fri Feb 28 07:51:00 2014
Êîäèðîâêà:

Ïîèñêîâûå ñëîâà: http astrokuban.info astrokuban
Support Apache des serveurs virtuels par nom - Serveur Apache <b style="color:black;background-color:#ffff66">HTTP</b>
<-
Apache > Serveur HTTP > Documentation > Version 2.2 > Serveurs virtuels

Support Apache des serveurs virtuels par nom

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

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

Voir aussi

top

Serveurs virtuels par nom vs. par IP

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 mod_ssl sans support SNI (situation standard depuis la version 2.2.12 d'Apache).

top

Utilisation de serveurs virtuels par nom

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 É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'emplacement sur le systÕme de fichiers du contenu de ce serveur.

Le serveur principal disparaÍt

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 suivante Þ httpd.conf :

NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</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 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 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 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, 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.

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

top

CompatibilitÈ avec les navigateurs anciens

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

De combien plus anciens ?

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 lÈgÕrement complexe :

Exemple de configuration :

NameVirtualHost 111.22.33.44

<VirtualHost 111.22.33.44>
ServerName www.domain.tld
ServerPath /domain
DocumentRoot /web/domain
</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 Þ 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.

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.