Consultez également:
Support d'hôtes basés sur des adresses IPAlors que l'approche sur les hôtes virtuels basés sur une adresse IP fonctionne très bien, ce n'est pas la solution la plus élégante, car, pour tout hôte virtuel une adresse IP dédiée est nécessaire et il est difficile d'en obtenir sur certaines machines. Le protocole HTTP/1.1
définit une méthode d'identification de serveur, par laquelle il peut déterminer à quel nom la requête a été adressée. La version 1.1 d'Apache et les suivantes supportent cette technique aussi bien que la méthode traditionnelle de l'adresse IP pour chaque nom d'hôte.
L'avantage d'utiliser les hôtes virtuels nommés est d'avoir pratiquement un nombre illimité de serveurs, faciles à utiliser et à configurer. Il requiert aucun matériel ni logiciel supplémentaire. Le principal désavantage est que le client doit supporter cette partie du protocole. Les dernières versions de la plupart des navigateurs le font, mais il existe des anciens navigateurs encore en service qui ne le font pas. Ceci peut causer des problèmes, bien qu'une solution soit exposée ci-dessous.
L'utilisation des nouveaux hôtes virtuels est relativement simple, et ressemble à peu près à l'ancienne méthode. Vous devez simplement ajouter à un des fichiers de configuration d'Apache ( plus particulièrement httpd.conf
ou srm.conf
) un code ressemblant à celui qui suit :
NameVirtualHost 111.22.33.44 <VirtualHost 111.22.33.44> ServerName www.domain.tld DocumentRoot /web/domain </VirtualHost>
La différence notable entre la configuration des hôtes virtuels basés sur une adresse IP et celle des hôtes nommés est la directive NameVirtualHost
, qui spécifie une adresse IP qui doit être utilisé comme une cible pour les hôtes virtuels nommés.
De plus, toute directive supplémentaire peut ( et doit ) être placé à l'intérieur de la section <VirtualHost>
. Pour que ceci fonctionne, vous devez vous assurez que le nom www.domain.tld est un alias (CNAME) pointant vers l'adresse IP 111.22.33.44
De nombreux serveurs peuvent être accessibles par plus d'un nom. Par exemple, le serveur de l'exemple peut être accessible en tant que domain.tld
, ou www2.domain.tld
, en supposant que les adresses IP définies pointent sur le même serveur. En fait, il se peut que l'on veuille que toutes les adresses du domaine domain.tld
soient prises en compte par ce serveur. Ceci est possible grâce à la directive ServerAlias
, placé à l'intérieur de la section <VirtualHost>. Par exemple::
ServerAlias domain.tld *.domain.tld
Notez que vous pouvez utiliser les
metacaractères * et ?.
Vous pouvez également avoir besoin de ServerAlias
si vous servez des utilisateurs locaux qui ne mentionnent pas toujours le nom du domaine. Par exemple, si les utilisateurs locaux préfèrent l'écriture "www" à l'écriture "www.foobar" , alors vous aurez besoin d'ajouter ServerAlias www www.foobar
. Il n'est pas possible pour le serveur de connaître quel domaine le client utilise pour la résolution du nom car le client ne peut pas fournir cette information dans sa requête.
Comme mentionné précédemment, certains clients n'envoient pas les données nécessaires au bon fonctionnement des hôtes virtuels nommés. Les pages envoyées à ces clients seront toujours celles du premier hôte virtuel nommé ( le premier apparaissant dans le fichier de configuration pour une adresse IP particulière).
Une solution possible consiste à utiliser la directive ServerPath
, bien qu'elle soit un peu fastidieuse :
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? Qu'une requête pour toute URI commençant par "/domain" sera servie à partir de l'hôte virtuel www.domain.tld Ce qui veut dire que les pages peuvent être obtenues par l'URL http://www.domain.tld/domain/
par tous les clients, bien que les clients renseignant le champ d'en-tête Host: puissent aussi y accéder en tant que http://www.domain.tld/
.
Pour que cela fonctionne, créez un lien sur la home-page de l'hôte virtuel vers http://www.domain.tld/domain/. Puis, dans les pages de l'hôte virtuel, forcez vous à utiliser, soit exclusivement des liens relatifs (ex. "file.html" ou "../icons/image.gif" ), soit des liens contenant le préfixe /domain/ (ex. "http://www.domain.tld/domain/misc/file.html" ou "/domain/misc/file.html").
Ceci demande de la discipline , mais si vous suivez la plupart des indications, assurez vous que vos pages fonctionneront avec tous les navigateurs, nouveaux et anciens.
Consultez : Exemple de configuration de ServerPath
Version française © Valery Fremaux, Yael Leblanc / EISTI 1998