Reverse proxy Nginx : configurer une page de maintenance automatique (failover)

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ètre proxy_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 et fail_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.




Laisser un commentaire