Serveurs virtuels
Support Apache des serveurs virtuels par IP
Support Apache des serveurs virtuels par nom
Système requis
Comme l'indique le terme par IP, le serveur
doit disposer de différentes paires adresses IP/port pour chaque
serveur virtuel par IP. La machine peut posséder
plusieurs connexions physiques au réseau, ou utiliser des
interfaces virtuelles qui sont supportées par la plupart des
systèmes d'exploitation modernes (Consultez la documentation des
systèmes d'exploitation pour plus de détails, notamment les "alias
IP" et la commande "ifconfig" pour les activer), et/ou utiliser
plusieurs numéros de port.
Selon la terminologie du serveur HTTP Apache, l'utilisation d'une
seule adresse IP avec plusieurs ports TCP s'apparente aussi à de
l'hébergement virtuel basé sur IP.
Comment configurer Apache
Il y a deux manières de configurer Apache pour le support de
multiples serveurs virtuels. Il suffit soit de faire tourner un
processus résident httpd pour chaque nom de
domaine, soit de faire tourner un unique processus résident qui
gère tous les serveurs virtuels.
Utilisez des processus résidents multiples lorsque :
- il y a des problèmes de répartition de sécurité, tels
qu'une entreprise1 ne souhaite que personne d'une entreprise2
ne puisse lire ses données excepté via le Web. Dans ce cas,
vous aurez besoin de deux processus résidents, chacun fonctionnant
avec des paramètres User,
Group,
Listen, et
ServerRoot différents.
- vous disposez suffisamment de mémoire et de
descripteurs de fichiers
pour l'écoute de chaque alias IP de la machine. Il est seulement
possible d'appliquer la directive
Listen, soit sur toutes
les adresses avec le joker "*", soit uniquement sur des adresses
spécifiques. Donc, si vous avez besoin d'écouter une adresse
en particulier, vous devrez le faire pour l'ensemble des
autres adresses (Bien qu'il soit plus simple de lancer un
processus httpd pour écouter N-1 adresses,
et un autre pour l'adresse restante).
Utilisez un unique processus résident lorsque :
- le partage de la configuration httpd entre les serveurs
virtuels est acceptable.
- la machine assume déjà une grande quantité de requêtes, et
que l'ajout de processus résidents supplémentaires en affecterait
les performances.
Configuration de processus multiples
Créez une installation indépendante du programme
httpd pour chaque serveur virtuel. Pour
chacune d'elle, utilisez la directive
Listen dans le fichier
de configuration pour définir l'adresse IP (ou serveur virtuel)
que le processus résident doit gérer. Par exemple :
Listen 192.0.2.100:80
Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
de domaine (consultez Problèmes DNS
avec Apache).
Configuration d'un unique processus
résident pour des serveurs virtuels
Dans ce cas, un unique processus httpd va gérer les requêtes
pour le serveur principal et tous les serveurs virtuels. Dans le
fichier de configuration, la directive
VirtualHost va servir à
définir les autres directives
ServerAdmin,
ServerName,
DocumentRoot,
ErrorLog et
TransferLog ou
CustomLog avec des
valeurs différentes pour chaque serveur virtuel. Par exemple :
<VirtualHost 172.20.30.40:80>
ServerAdmin webmaster@www1.example.com
DocumentRoot /www/vhosts/www1
ServerName www1.example.com
ErrorLog /www/logs/www1/error_log
CustomLog /www/logs/www1/access_log combined
</VirtualHost>
<VirtualHost 172.20.30.50:80>
ServerAdmin webmaster@www2.example.org
DocumentRoot /www/vhosts/www2
ServerName www2.example.org
ErrorLog /www/logs/www2/error_log
CustomLog /www/logs/www2/access_log combined
</VirtualHost>
Il est recommandé d'utiliser une adresse IP plutôt qu'un nom
de domaine comme argument à la directive <VirtualHost>
(consultez Problèmes DNS
avec Apache).
Presque toutes les directives de configuration
peuvent être employées dans une directive VirtualHost, à l'exception
des directives qui contrôlent la création du processus et de
quelques autres. Pour connaître celles utilisables dans une
directive VirtualHost, vérifiez leur
Contexte en utilisant
l'Index des directives.
SuexecUserGroup peut être
utilisées à l'intérieur d'une directive VirtualHost si l'exécution se fait
sous suEXEC. (Voir suEXEC).
SÉCURITÉ : lorsque vous spécifiez où écrire les
fichiers journaux, soyez attentif aux risques si quelqu'un d'autre
que celui qui a démarré Apache dispose des droits d'écriture
sur l'emplacement de ces fichiers. Consultez les
Conseils sur la sécurité
pour plus de détails.