Pour servir plusieurs sites à partir d’un même serveur, il y à 3 catégories d’hôtes virtuels :
- hôtes virtuels basés sur l’adresse IP : chaque site à une adresse IP distincte et une adresse IP ne peut être utilisée que par un seul site.
- hôtes virtuels basés sur le port : une adresse IP pour l’ensemble des sites et chaques site à un port différent.
- hôtes virtuels basés sur le nom : on distingue chaque site en fonction du champ Host de la requête HTTP
Pour la configuration des hôtes virtuels, on travaille à la fois sur le fichier http.conf de Apache, mais aussi sur le fichier httpd-vhosts.conf.
Les hôtes virtuels basés sur l’adresse IP
Dans le httpd.conf :
Listen 127.0.1.10:80
Listen 127.1.1.11:80
Listen 127.1.1.12:80
On peut tester en faisant un netstat -an
Une fois qu’on s’est assuré que cela marche, on décommente la ligne d’inclusion du fichier vhost :
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
On peut configurer les 3 sites dans le fichier vhost :
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/1"
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/2"
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/3"
On crée un dossier par site dans htdocs et on y ajoute un fichier de test.
On test les 3 sites :
- http://127.1.1.10,
- http://127.1.1.11,
- http://127.1.1.12
Inconvenients de ce type de vhosts : limites de l’ipv4 sur le nombre de combinaison possible…
Hôte virtuel basé sur le port
cf. Hotes virtuels basé sur l’IP. On change dans le httpd.conf:
Listen 127.0.0.1:80
Listen 127.0.0.1:81
Listen 127.0.0.1:82
Et dans le vhosts.conf :
On test :
- http://127.0.0.1:80,
- http://127.0.0.1:81,
- http://127.0.0.1:82
Hôte virtuel basé sur le nom
Pour palier aux contraintes de limite de l’IPv4 (cf. Hotes virtuels basé sur l’IP), on utilise ce type d’Hôtes Virtuels.
On change dans le httpd.conf:
Listen 127.0.0.1:80
Dans le vhost.conf
NameVirtualHost 127.0.0.1:80
ServerName foo.foo.com
DocumentRoot « C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/1″
ServerName foo.bar.com
DocumentRoot « C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/2″
ServerName foo.baz.com
DocumentRoot « C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/3″
Pour tester, soit on achete les noms de domaines (:D), soit on modifie le fichier hosts de l’OS.
Les trois sortes d’hôtes virtuels sont combinables.