====== Site par défaut sous Apache 2 ====== ===== Problème ===== * Quel site affiche mon serveur Apache si je pointe un navigateur sur son IP((Ou l'une de ses IPs?)) ? * 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 logiciel((Dans les code source ou les options de compilation.)), 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 [[http://httpd.apache.org/docs/2.4/vhosts/examples.html#default|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à !