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.