Serveur Apache HTTP Version 2.2
L'hébergement virtuel basé sur IP est une méthode permettant d'appliquer certaines directives en fonction de l'adresse IP et du port sur lesquels la requête est reçue. En général, il s'agit de servir différents sites web sur des ports ou interfaces différents.
Dans de nombreux cas, l'hébergement virtuel basé sur le nom est plus adapté car il permet à plusieurs serveurs virtuels de partager la même adresse/port. Voir le document Hébergement virtuel basé sur IP ou sur le nom pour prendre votre décision.
Comme l'indique le terme par IP, le serveur doit disposer de couples adresses IP/port différents 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 ports.
Dans la terminologie du serveur HTTP Apache, l'utilisation de plusieurs ports TCP pour une seule adresse IP se nomme aussi hébergement virtuel basé sur IP.
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 :
User
,
Group
,
Listen
, et
ServerRoot
différents.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 :
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.168.0.1:80
Il est recommandé d'utiliser une adresse IP plutôt qu'un nom de domaine (consultez Problèmes DNS avec Apache).
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 192.168.0.1:80>
ServerAdmin webmaster@smallco.example.com
DocumentRoot /groups/smallco/www
ServerName smallco.example.com
ErrorLog /groups/smallco/logs/error_log
TransferLog /groups/smallco/logs/access_log
</VirtualHost>
<VirtualHost 192.168.0.2:80>
ServerAdmin webmaster@baygroup.example.org
DocumentRoot /groups/baygroup/www
ServerName baygroup.example.com
ErrorLog /groups/baygroup/logs/error_log
TransferLog /groups/baygroup/logs/access_log
</VirtualHost>
Il est recommandé d'utiliser une adresse IP plutôt qu'un nom de domaine dans la définition du <VirtualHost> (consultez Problèmes DNS avec Apache).
Les adresses IP et ports explicites l'emportent sur leurs équivalents avec caractères génériques, et tout serveur virtuel qui correspond à la requête l'emporte sur la configuration du serveur de base.
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.