Serveur HTTP Apache Version 2.4

Apache > Serveur HTTP > Documentation > Version 2.4 > Serveurs virtuels

# Support Apache des serveurs virtuels par IP

### Voir aussi

- 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'directive index.

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