Mercredi 11 janvier 2006 — Dernier ajout dimanche 4 juillet 2010

Multi homing : plusieurs sites web sur un serveur Apache

C’est une problématique assez classique : comment avoir sur sa machine de développement plusieurs sites web placés à la racine du serveur ?

C’est la notion de multi homing.

Adresses IP, DNS et URL : un peu de théorie

Sur Internet, les ordinateurs (serveurs ou clients) sont identifiés par leur adresse IP.

Comme il est difficile de retenir une adresse IP, les DNS viennent au secours des êtres humains que nous sommes en nous permettant de retenir mondomaine.tld au lieu de 7.4.234.17.

Une URL, c’est un protocole, un nom de domaine et un chemin d’accès :

  • http:// protocole
  • www.mondomaine.tld : le nom de domaine
  • dossier/sous_dossier/fichier.html : un chemin d’accès

Au début du web en France, avec Mygale.org, on a vu fleurir des sites web persos ayant des URLs du type : http://www.mygale.org/~pnom/. Ce n’est pas très joli ni très facile à dicter ou saisir au clavier.

Et puis ces sites sont rapidement devenus : http://pnom.mygale.org/ (c’est ce qu’on voit par exemple sur les sites persos de Free, mais pas sur ceux de Wanadoo).

C’est ainsi qu’est apparue la notion de multi homing, autrement dit, la possibilité d’avoir plusieurs racines de site web (home page) sur un seul serveur web.

Est-ce que ce résultat a été obtenu en multipliant les adresses IP du serveur ? Bien que techniquement possible, cette solution n’est pas viable à terme du fait de la pénurie d’adresses IP.

La solution technique est donc celle des hôtes virtuels : Virtual Hosts.

Mise en place du Multi Homing dans apache [1]

Configuration d’apache : les Virtual Hosts

Vous pourrez à l’occasion consulter la documentation complète de la configuration des Virtual Hosts sur le site d’apache.

Le fichier de configuration d’apache est httpd.conf [2]

Il vous faudra dans un premier temps activer la possibilité du multi homing en décommentant [3] la ligne :

Ensuite, pour chaque nouveau site que vous voudrez mettre en place, vous pourrez mettre à la fin de ce fichier, en dessous de l’exemple :

Explications :

  • ServerAdmin : c’est l’adresse email de l’admin du site : vous
  • DocumentRoot : c’est le chemin d’accès fichier à la racine de votre site web dans la syntaxe du système d’exploitation hôte :
    • sous Windows, par exemple : D:\wwwrootDev\site1
    • sous Linux : /wwwrootDev/site1
  • ServerName : le nom de domaine que vous voulez utiliser pour accéder au site web depuis un navigateur :
    • il peut être farfelu : DarkVador
    • ou il peut être un domaine ou plus généralement, un sous domaine d’un domaine que vous gérez : darkvador.pyrat.net
      Dans ce cas, il sera assez facile de permettre à une personne extérieure de visiter votre site web tournant en local.

Rappel : après toute modification de httpd.conf (ou de php.ini), il faut redémarrer le serveur apache.

Configuration du DNS et du fichier hosts

Une fois les modification faites dans le serveur web apache, il faut pouvoir accéder au site ainsi mis en place. Pour cela, il faut le déclarer dans un serveur de nom (DNS) ou dans le fichier hosts [4].

Pour le déclarer dans un DNS, il faut disposer d’une adresse IP fixe [5]. Donc, dans l’administration de votre nom de domaine, vous pouvez mettre en place une nouvelle entrée de type A (Adresse) pointant sur votre adresse IP fixe.

L’usage du DNS vous permet de rendre votre site visible simplement depuis Internet.

Mais la mise en place du DNS ne vous prive pas de configurer aussi le fichier hosts [6].

Dans ce dernier, pour chaque nouveau site web, rajoutez une ligne du type :

Explications :

  • 127.0.0.1 : adresse IP locale de la machine : valable même quand vous n’êtes pas connecté à Internet [7]
  • nomdomaine.tld : le nom de domaine du site que vous venez de créer
  • #chemin d’accès : facultatif, mais pratique pour s’y retrouver [8] : le chemin d’accès au site que vous venez de mettre en place

Remarque : sans passer par un DNS, vous pouvez permettre l’accès à votre serveur depuis Internet à toute personne réalisant les mêmes modifications que vous dans son fichier hosts [9].

Et si vous êtes derrière un routeur ?

Il vous suffit pour rendre votre serveur web accessible depuis Internet de demander au routeur de propager les requêtes HTTP vers votre machine. Cela s’appelle aussi du Port forwarding.

[1C’est volontairement que nous n’abordons pas ici la question de la configuration d’IIS de Microsoft.

[2Aussi bien sous Windows que sous Linux

[3Enlever le # en début de ligne

[4Hosts : fichier servant à la résolution locale des noms de domaine

[5ou faire appel à un service de dynDNS : DNS dynamique ; ce cas n’est pas traité ici

[6À chercher sur votre ordinateur

[7Permettant donc de travailler hors connexion

[8C’est une bonne pratique d’auto documentation

[9C’est juste difficile à expliquer à un néophyte

Vos réactions

  • 5 juin 2009 10:01

    Simple et très utile

    le NameVirtualHost * surtout !

    merci