Outils pour utilisateurs

Outils du site


site_par_defaut_sous_apache_2

Site par défaut sous Apache 2

Problème

  • Quel site affiche mon serveur Apache si je pointe un navigateur sur son IP1) ?
  • Quel site affiche mon serveur Apache si un site est désactivé mais que le DNS continue à pointer sur ce serveur ?

Ces questions montrent le besoin de désigner un site par défaut pour un serveur Apache. Toute requête pointant sur le serveur mais ne correspondant pas à un site “légitime” renverront automatique sur ce site par défaut.

Solution native Apache

Apache a prévu un tel besoin mais rien n'est clair car la documentation disponible entretient la confusion entre ce qui relève du comportement programmé au cœur logiciel2), des pré-requis de configuration ou des conventions…

Default Server

Pour commencer à embrouiller les choses, Apache définit un serveur par défaut, Default Server, qui présente la caractéristique de ne pas être un vhost. Le serveur ainsi défini est celui qui prendra la mains tant qu'aucun vhost n'est créé ! Dès la création du premier vhost, le serveur défini comme Default Server est purement et simplement ignoré.

Virtualhost par défaut

Si l'on crée un seul vhost, il devient automatique le serveur par défaut. Dès la création du deuxième vhost, une question surgit : lequel est le serveur par défaut ?

En présence de plusieurs vhosts, Apache traitera la premier virtualhost déclaré lors du chargement de sa configuration comme étant le serveur par défaut. En pratique cela dépendra de comment chaque distribution organise les fichiers de configuration d'Apache. Sur Debian, par exemple, ce sera le premier vhost, au sens de l'ordre alphabétique, des “sites-enabled”. C'est nul, mais c'est comme ça ! C'est d'autant plus ballot qu'on peut déclarer un Default Server mais, comme dit précédemment l'utilisation des vhosts désactive cette fonctionnalité.

Virtualhost explicite

Pour mettre de l'ordre dans cette pagaille, Apache introduit la notion explicite de _default_ vhost. Cela permet de réintroduire la notion de Default Serveur lorsqu'on utilise des virtualhosts.

En toute honnêteté, la notion de _default_ host permet de faire beaucoup plus qu'un Default Server unique. On peut, par exemple définir un _default_ host par port, un catchall IP, etc. Pour plus d'information se reporter à la documentation officielle.

Virtualmin default host

Virtualmin bouscule et simplifie la création classique de vhost par défaut. Virtualmin cantonne Apache à une exécution via suexec et le contraint au répertoire /home. Ceci a pour effet de prendre à contre-pied les habitudes de configuration de host par défaut - sur Apache - qui utilisent généralement /var/www.

Avec Virtualmin, il est vivement conseillé de définir le host par défaut “à la manière de” virtualmin plutôt que de forcer une configuration de type Apache “classique”. C'est tellement simple qu'on aurait tort de s'en priver :

"choose server" > Server Confirugation > Website Options > Default website for IP address

Et voilà !

1)
Ou l'une de ses IPs?
2)
Dans les code source ou les options de compilation.
site_par_defaut_sous_apache_2.txt · Dernière modification: 2015/04/24 08:52 de flaz