Nginx: una página de mantenimiento común para múltiples aplicaciones Angular dockerizadas

Nginx: una página de mantenimiento común para múltiples aplicaciones Angular dockerizadas

Alojo varias aplicaciones Angular con Nginx. Todos se ejecutan en sus propios contenedores y, si un contenedor está fuera de línea, muestro una página de mantenimiento ubicada en /var/www/maintenance/. Para hacer esto, mis archivos de configuración de host virtual son generalmente así (se omiten las partes irrelevantes):

server {

        ...  

        location / {
        proxy_pass http://127.0.0.1:8099;
        proxy_set_header X-FORWARDED-FOR $proxy_add_x_forwarded_for;
        proxy_set_header X-FORWARDED-HOST $host;
        proxy_set_header X-FORWARDED-PROTO $scheme;
        proxy_connect_timeout 1;
        proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404;
        proxy_intercept_errors on;
        try_files $uri $uri/ /index.html;
        }

        error_page 403 501 502 503 504 /maintenance.html;
        location = /maintenance.html {
            root /var/www/maintenance;
        }
}

Esto funciona bien, pero es engorroso en caso de que tenga que hacer cambios. ¿Cómo podría implementar esta funcionalidad en el nginx.conf principal o hacerla más fácil de mantener? ¿Puedo, en lugar de incluir la configuración de la página de mantenimiento en cada configuración de host virtual, incluirla una vez en nginx.conf, que a su vez incluye todas las configuraciones de host virtual?

Respuesta1

Agregue un nuevo archivo de configuración maintenance.conf, que contenga:

location = /maintenance.html {
    root /var/www/maintenance;
}

Y luego usar

include /path/to/maintenance.conf;

en la configuración de su host virtual.

información relacionada