Apache/Serveurs virtuels

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


Principe[modifier | modifier le wikicode]

Apache peut gérer plusieurs sites web simultanément. Ils seront tous accessibles à partir de la même adresse IP et du même port.

Pour les différencier, Apache se sert de l'adresse demandée par le navigateur.

Par exemple si site1.com et site2.com pointent sur la même adresse IP, les URL http://site1.com/ et http://site2.com/ aboutiront sur le même serveur.

Mais au moment de la requête, le navigateur précise qu'il a demandé l'adresse http://site1.com/ ou http://site2.com/.

Apache se sert de cette information pour savoir quel site afficher. On parle de serveur virtuel ou virtual host.

Configuration[modifier | modifier le wikicode]

Pour indiquer à Apache quel site correspond à un nom de domaine, on utilise une section <VirtualHost *>. Sous Debian, il y a généralement un fichier par section VirtualHost dans le répertoire /etc/apache2/sites-available.

La section devra contenir une directive ServerName[1] qui indiquera le nom associé à ce serveur virtuel.

Elle pourra également contenir une directive ServerAlias si on veut que d'autres noms aboutissent à ce site.

Par exemple[2] :

  • En Windows éditer C:\Program Files (x86)\EasyPHP\binaries\conf_files\httpd.conf
  • En Unix-like : /etc/apache2/httpd.conf ou /etc/apache2/apache2.conf
<VirtualHost MonIP:80>
  ServerAdmin admin@site1.com
  DocumentRoot /home/site1/public_html
  ServerName site1.com
  ServerAlias www.site1.com
</VirtualHost>

<VirtualHost MonIP:80>
  ServerAdmin admin@site2.com
  DocumentRoot /home/site2/public_html
  ServerName site2.com
  ServerAlias www.site2.com
  AccessLog /home/site2/access.log
  ErrorLog /home/site2/error.log
  <Directory /home/site2/public_html>
    AllowOverride All
  </Directory>
</VirtualHost>

Pour affecter tous les sites et ports, remplacer ceux-ci dans la première balise par *.

En cas d'erreur Apache d'ajouter une "directive" lors de sa relance, ajouter une ligne NameVirtualHost MonIP:MonPort.

La documentation d'Apache sur les serveurs virtuels[3] contient des informations détaillées sur le sujet.

Pour que ce serveur virtuel fonctionne, il est impératif que les noms site1.com et www.site1.com soient connus par la machine qui tente d'y accéder (celle qui lance le navigateur).

Pour cela il y a plusieurs méthodes :

  • acheter le nom de domaine en question et le configurer pour qu'il pointe sur la bonne adresse IP
  • utiliser un serveur DNS qui renverra la bonne IP pour ce domaine
  • modifier le fichier hosts sur la machine cliente pour faire correspondre ce domaine à la bonne adresse IP (voir le livre Installation et configuration d'une carte réseau)

Références[modifier | modifier le wikicode]

  1. http://httpd.apache.org/docs/2.2/mod/core.html#servername
  2. https://httpd.apache.org/docs/2.4/fr/vhosts/examples.html
  3. http://httpd.apache.org/docs/2.2/vhosts/