En utilisant Apache Virtual Host, vous pouvez exécuter plusieurs sites Web sur le même serveur.
Par exemple, je peux exécuter à la fois thegeekstuff.com et top5freeware.com sur un seul serveur physique sur lequel un serveur Web Apache est exécuté.
Fig :Apache Virtual Host (Plusieurs sites Web, un Apache)
Il existe deux types de configurations d'hôtes virtuels Apache :1) Hôte virtuel basé sur IP et 2) Hôte virtuel basé sur le nom. L'hôte virtuel basé sur le nom est recommandé pour la plupart des scénarios.
Hôte virtuel basé sur IP
Dans cette configuration, lorsque vous pointez deux sites Web (avec une adresse IP différente) vers le serveur qui exécute Apache, ce serveur physique doit avoir deux adresses IP différentes configurées.
Cela signifie que le serveur doit avoir deux cartes Ethernet, chacune d'elles configurée sur l'adresse IP du site Web correspondant que l'hôte virtuel Apache desservira. Donc, ce n'est pas pratique pour la plupart des aspects, et vous ne devriez pas l'utiliser.
Dans l'exemple suivant, le serveur contient deux cartes réseau, une est configurée avec l'adresse IP 192.168.101.1 pour thegeekstuff.com, une autre est configurée avec 192.168.102.1 pour top5freeware.com. Ces deux adresses IP sont desservies par un seul serveur Web Apache exécuté sur ce serveur à l'aide d'un hôte virtuel basé sur IP.
Fig :Hôte virtuel basé sur IP Apache
Hôte virtuel basé sur le nom
Dans cette configuration, lorsque le serveur Web Apache reçoit une requête, il recherche le nom d'hôte dans l'en-tête HTTP et, en fonction du nom d'hôte, il héberge différents sites Web. C'est très simple, car vous n'avez besoin que d'une seule adresse IP sur ce serveur physique; mais, vous mettez à jour le DNS avec plusieurs noms de sites Web pointant vers la même adresse IP. À toutes fins pratiques, vous n'utiliserez que la configuration d'hôte virtuel basée sur le nom.
Dans l'exemple suivant, le serveur contient une seule carte NIC, qui est configurée avec l'adresse IP 192.168.101.1. L'entrée DNS pour les sites Web thegeekstuff.com et top5freeware.com pointe vers l'adresse IP 192.168.101.1. Lorsqu'Apache reçoit une requête, il recherche l'entrée du nom d'hôte dans l'en-tête HTTP et dessert le site Web correspondant.
Fig :Hôte virtuel basé sur le nom d'Apache
1. Décommentez httpd-vhosts.conf dans httpd.conf
Si vous avez installé Apache 2 à partir des sources, par défaut, la ligne suivante sera commentée dans le fichier httpd.conf. Décommentez cette ligne.
# vi /usr/local/apache2/conf/httpd.conf Include conf/extra/httpd-vhosts.conf
2. Configurer les hôtes virtuels
Modifiez httpd-vhosts.conf comme indiqué ci-dessous pour configurer le paramètre d'hôte virtuel basé sur le nom pour deux hôtes.
- NameVirtualHost *:80 - Indique que tous les hôtes virtuels basés sur le nom écouteront sur le port par défaut 80
- Dans l'exemple suivant, nous configurons un hôte virtuel pour thegeekstuff.com et top5freeware.com écoutant sur le même port 80. Ainsi, il y aura deux
- Lorsque vous accédez à thegeekstuff.com, les fichiers sous /usr/local/apache2/docs/thegeekstuff seront servis par Apache ; et les access_log et error_log pour ce site iront sous /usr/local/apache2/logs/thegeekstuff
# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/apache2/docs/thegeekstuff" ServerName thegeekstuff.com ServerAlias www.thegeekstuff.com ErrorLog "logs/thegeekstuff/error_log" CustomLog "logs/thegeekstuff/access_log" common </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/apache2/docs/top5freeware" ServerName top5freeware.com ServerAlias www.top5freeware.com ErrorLog "logs/top5freeware/error_log" CustomLog "logs/top5freeware/access_log" common </VirtualHost>
3. Vérifier la syntaxe de configuration de VirtualHost
Vérifiez la syntaxe de la configuration virtuelle à l'aide de "httpd -S" comme indiqué ci-dessous. Lorsque tout est correctement configuré, il affiche simplement "Syntaxe OK".
# /usr/local/apache2/bin/httpd -S VirtualHost configuration: Syntax OK
Lorsque quelque chose n'est pas configuré correctement, il affichera un message d'avertissement, y compris le message "Le répertoire ne se ferme pas", comme indiqué ci-dessous.
# /usr/local/apache2/bin/httpd -S Warning: DocumentRoot [/usr/local/apache2/docs/top5freeware] does not exist Warning: ErrorLog [/usr/local/apache2/logs/thegeekstuff] does not exist Syntax OK
4. Redémarrez Apache et testez
# /usr/local/apache2/bin/apachectl restart
Maintenant, lorsque vous allez sur thegeekstuff.com (ou www.thegeekstuff.com), apache servira les fichiers du répertoire /usr/local/apache2/docs/thegeekstuff.
Lorsque vous accédez à top5freeware.com (ou www.top5freeware.com), le même apache exécuté sur le même serveur servira les fichiers du répertoire /usr/local/apache2/docs/top5freeware.
Juste pour réitérer, pour que l'hôte virtuel basé sur le nom fonctionne correctement, l'entrée DNS de ces deux sites Web doit pointer vers la même adresse IP externe du serveur physique sur lequel le serveur Web Apache est exécuté.