Nginx – Eine gemeinsame Wartungsseite für mehrere dockerisierte Angular-Anwendungen

Nginx – Eine gemeinsame Wartungsseite für mehrere dockerisierte Angular-Anwendungen

Ich hoste mehrere Angular-Apps mit Nginx. Alle laufen in ihren eigenen Containern und wenn ein Container offline ist, zeige ich eine Wartungsseite unter /var/www/maintenance/ an. Zu diesem Zweck sehen meine virtuellen Host-Konfigurationsdateien im Allgemeinen so aus (irrelevante Teile weggelassen):

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;
        }
}

Das funktioniert gut, ist aber umständlich, wenn ich Änderungen vornehmen muss. Wie könnte ich diese Funktionalität in die Hauptdatei nginx.conf implementieren oder sie anderweitig wartungsfreundlicher machen? Könnte ich die Konfiguration der Wartungsseite, anstatt sie in jede virtuelle Hostkonfiguration aufzunehmen, einmal in die nginx.conf aufnehmen, die wiederum alle virtuellen Hostkonfigurationen enthält?

Antwort1

Fügen Sie eine neue Konfigurationsdatei hinzu maintenance.conf, die Folgendes enthält:

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

Und dann verwenden

include /path/to/maintenance.conf;

in Ihrer virtuellen Hostkonfiguration.

verwandte Informationen