Manejar un estado de Mantemiento WebSite con NGINX

Crear un estado de “Mantenimiento de sitio” es necesario para mantener informado a nuestros usuarios de lo que acontece con nuestro sitio y no verla completamente offline.

La idea es poder intercambiar rápidamente a un “estado de mantenimiento” de sitio controlado por una sentencia IF.

Todas las configuraciones se hacen dentro de la directiva de configuración server.

Definimos una variable llamada $maintenance que nos servirá para poder controlar el estatus de nuestro sitio.

set $maintenance TRUE;

Ahora en todas nuestras directivas location de nuestra configuración de sitio pondremos en la parte inicial una sentencia condicional IF que en caso de ser igual a TRUE retornaremos un error 503 (usado para manejar el estatus de servicio temporalmente inhabilitado o en mantenimiento), caso contrario continuara con el flujo.

location / {
    # Mantenimiento
    if ($maintenance = TRUE){ return 503; }
}

Toca definir como manejaremos el estatus 503 esto con la variable de configuración error_page (info) que nos permite manipular la respuesta que se dará cuando un código de error ocurra.

error_page 503 /503.html;
location = /503.html {
    root /path/to/error/templates/;
}

Creamos un archivo 503.html que nos servirá para desplegar el mensaje de estado de mantenimiento, dentro de la directiva location tenemos la variable root donde pondremos el directorio absoluto de la carpeta donde se aloja nuestro archivo html.

Solo nos queda guardar nuestros cambios y reiniciar el servicio NGINX para probar la configuración.

Para volver al estado online de nuestro sitio solo necesitamos cambiar el valor a nuestra variable $maintenance de TRUE a FALSE (o cualquier otro valor) y reiniciar el servicio NGINX.