Dans ce tutoriel, je vais vous expliquer comment créer une page de maintenance automatique avec Nginx quand celui-ci est configuré en tant que Reverse proxy.
Le but, c’est qu’en cas d’indisponibilité du service Web, Nginx redirige automatiquement les requêtes vers une page de maintenance.
Pour simuler l’environnement, je me suis appuyer sur des conteneurs Apache2 pour simuler les sites Internet :
- demo.rdr-it.loc sur le port 8080
- maintenance.rdr-it.loc sur le port 8081
Le but ici va être de rediriger les requête du site demo.rdr-it.loc vers maintenance.rdr-it.loc quand le site ne sera pas disponible.
Voici les pages des deux sites respectifs quand on les attaques en directe :
Maintenance, on va passer à la configuration du virtualhost sur Nginx, afin que cela soit compréhensible, je vais procéder par étape.
De manière « classique », voici le virtualhost du site demo.rdr-it.loc
On va commencer par ajouter à la configuration, un bloc upstream
qui va contenir le serveur de destination.
Le bloc
upstream
est utilisé dans des configurations plus complexe, qui permet de configurer plusieurs serveurs de destination comme dans le cas d’un load-balancing ou dans notre cas, un serveur de « backup ».De nombreux paramètres peuvent configurer.
Voici maintenant le fichier du virtualhost avec le bloc upstream
:
Comme on peut le voir, le bloc
upstream
est nommé et le nom est utilisé dans le paramètreproxy_pass
.
Maintenant, on va pouvoir déclarer un second serveur, qui sera configurer comme backup et on va indiquer aussi sur notre serveur principal quand celui-ci doit être configuré comme indisponible.
Voici le virtualhost (je vous explique après) :
Sur le serveur « principal », j’ai ajouté
max_fails=1
, ce qui signifie que le basculement se fait dès le premier échec etfail_timeout=5s
indique au bout de combien de temps, on retente de basculer sur ce serveur.Le second serveur j’ai juste indiqué
backup
.
Si je tente de faire une requête sur le site demo.rdr-it.loc et que le site n’est pas disponible, j’arrive sur la page de maintenance :
Vous savez maintenant comme configurer une page de maintenance automatique en utilisant Nginx comme reverse proxy.
Le but de ce tutoriel est de vous expliquez le concept, mais il faut penser sur votre site de maintenance à rediriger toutes les requêtes vers la page d’index, sinon vous aurez une erreur 404.
Il est possible aussi de faire cela en PHP par exemple et de recevoir une notification par email pour vous informer que vous avez basculer sur le site de backup.
Dans le cadre d’un site publié sur Internet et indexer par les moteurs de recherche, penser aussi à indiquer un code 503 pour informer les robots que le site est en maintenance.