30.9. Les hôtes virtuels

Les hôtes virtuels permettent de configurer plusieurs domaines sur un unique serveur du réseau. On économise ainsi les coûts et le travail d'administration nécessaires à l'installation d'un serveur par domaine. Il existe plusieurs possibilités pour les hôtes virtuels :

30.9.1. Les hôtes virtuels basés sur le nom

Plusieurs domaines peuvent être gérés par une seule instance d'Apache par le biais des hôtes virtuels basés sur le nom. Il n'est alors pas nécessaire de configurer plusieurs adresses IP pour un ordinateur. Il s'agit de l'alternative la plus simple et la plus populaire. Des raisons pour ne pas utiliser d'hôtes virtuels basés sur le nom sont disponibles dans la documentation d'Apache.

Vous pouvez configurer ce point directement dans le fichier de configuration /etc/apache2/httpd.conf. Pour activer des hôtes virtuels basés sur nom, il faut indiquer une directive adéquate. NameVirtualHost ** est suffisante pour qu'Apache accepte toutes les requêtes entrantes. Vous devez ensuite configurer chaque hôte virtuel :

<VirtualHost *>
    ServerName www.exemple.com
    DocumentRoot /srv/www/htdocs/exemple.com
    ServerAdmin webmaster@exemple.com
    ErrorLog /var/log/apache2/www.exemple.com-error_log
    CustomLog /var/log/apache2/www.exemple.com-access_log common
</VirtualHost>
<VirtualHost *>
    ServerName www.monautreentreprise.fr
    DocumentRoot /srv/www/htdocs/monautreentreprise.fr
    ServerAdmin webmaster@monautreentreprise.fr
    ErrorLog /var/log/apache2/www.monautreentreprise.fr-error_log
    CustomLog /var/log/apache2/www.monautreentreprise.fr-access_log common
 </VirtualHost>
 

Une déclaration VirtualHost d'hôte virtuel doit également être configurée pour le domaine hébergé par le serveur à l'origine (www.exemple.com). Dans cet exemple, le domaine initial et un domaine additionnel (www.monautreentreprise.fr) sont hébergés sur le même serveur.

Dans les directives VirtualHost, on trouve un *, tout comme pour NameVirtualHost. Apache établit le rapport entre la demande et l'hôte virtuel par le champ d'hôte dans l'en-tête HTTP. La demande est transmise à l'hôte virtuel, dont le ServerName (nom de serveur) correspond au nom de l'hôte indiqué dans ce champ.

Dans les directives ErrorLog et CustomLog, il n'est pas crucial que fichiers contiennent le nom du domaine ; on peut utiliser des noms quelconques.

Serveradmin désigne l'adresse e-mail de la personne responsable du serveur que l'on peut contacter en cas de problèmes. Si des erreurs se produisent, Apache indique cette adresse dans les messages d'erreur qu'il restitue au client.

30.9.2. Les hôtes virtuels basés sur l'adresse IP

Cette alternative nécessite de configurer plusieurs adresses IP sur l'ordinateur. Une instance d'Apache commande ensuite plusieurs domaines, chaque domaine se voyant attribuer une adresse IP. L'exemple qui suit montre comment configurer Apache afin qu'il héberge, outre sur son adresse IP d'origine 192.168.1.10, deux autres domaines sur des adresses IP supplémentaires (192.168.1.20 et 192.168.1.21). Cet exemple concret ne fonctionne bien sûr que dans un intranet, puisque les adresses IP allant de 192.168.0.0 à 192.168.255.0 ne sont pas routées sur l'Internet.

30.9.2.1. Configurer les alias IP

Pour qu'Apache puisse héberger plusieurs adresses IP, l'ordinateur sur lequel Apache fonctionne doit accepter les demandes pour plusieurs adresses IP, ce qu'on appelle le Multi-IP-Hosting. Cela nécessite d'abord que les alias IP soient activés dans le noyau, ce qui est le cas par défaut sous SUSE LINUX.

Une fois que le noyau est configuré pour prendre en charge les alias IP, on peut affecter plusieurs adresses IP à l'ordinateur en utilisant les commandes ifconfig et route. Ces commandes doivent être exécutées en tant qu'utilisateur root. On suppose, dans l'exemple suivant, que l'ordinateur dispose déjà de sa propre adresse IP, 192.168.1.10 étant attribuée au périphérique réseau eth0.

On peut voir quelle adresse IP est utilisée par l'ordinateur en saisissant la commande ifconfig. Pour ajouter d'autres adresses IP, utilisez la commande suivante :

ip addr add 192.168.1.20/24 dev eth0

Toutes ces adresses IP sont attribuées au même périphérique réseau physique (eth0).

30.9.2.2. Hôtes Virtuels avec adresses IP

Lorsque les alias IP ont été configurés sur le système ou bien que l'ordinateur a été configuré avec plusieurs cartes réseau, on peut procéder à la configuration d'Apache. Indiquez pour chaque serveur virtuel son propre bloc VirtualHost :

<VirtualHost 192.168.1.20>
    ServerName www.monautreentreprise.fr
    DocumentRoot /srv/www/htdocs/monautreentreprise.fr
    ServerAdmin webmaster@monautreentreprise.fr
    ErrorLog /var/log/apache2/www.monautreentreprise.fr-error_log
    CustomLog /var/log/apache2/www.monautreentreprise.fr-access_log common
</VirtualHost>

<VirtualHost 192.168.1.21>
    ServerName www.encoreuneentreprise.fr
    DocumentRoot /srv/www/htdocs/encoreuneentreprise.fr
    ServerAdmin webmaster@encoreuneentreprise.fr
    ErrorLog /var/log/apache2/www.encoreuneentreprise.fr-error_log
    CustomLog /var/log/apache2/www.encoreuneentreprise.fr-access_log common
</VirtualHost> 

On n'indique ici les directives VirtualHost que pour les domaines supplémentaires ; le domaine initial (www.exemple.com) est toujours configuré par les réglages correspondants (DocumentRoot etc.) en dehors des blocs VirtualHost.

30.9.3. Instances multiples d'Apache

Avec les méthodes précédentes de gestion des hôtes virtuels, les administrateurs d'un domaine peuvent lire les données contenues des autres domaines. Pour séparer les différents domaines les uns des autres, on peut lancer plusieurs instances d'Apache qui utilisent chacune dans le fichier de configuration leurs propres réglages pour User, Group etc..

Indiquez dans le fichier de configuration pour la directive Listen l'adresse IP gérée par l'instance d'Apache correspondante. Comme dans l'exemple précédent, la directive pour la première instance d'Apache serait :

Listen 192.168.1.10:80

Pour les deux autres instances, elle serait :

Listen 192.168.1.20:80
Listen 192.168.1.21:80

SUSE LINUX Guide de l'administrateur 9.2