HTTP-Fehler im NGINX-Reverse-Proxy verarbeiten
Fehler passieren – Und damit diese Fehler den Webseiten-Besuch nicht unnötig beeinträchtigen, sollten diese soweit wie möglich in der Gestaltung der jeweiligen Webseite einherkommen. Hier eine Lösung um Fehler "ab NGINX" abzufangen.
16.04.2024 - Manuel Wohlers
Ausgangssituation & Anforderung
Für eine Webseite mit vorgeschaltetem NGINX-Reverse-Proxy wurde in einigen Fällen eine weiße Seite mit einer läppischen Fehlermeldung der Art "Error 500 – Ein Fehler ist aufgetreten" oder "Error 401 – Zugriff verweigert!" ausgegeben.
Da die Kunden-Anforderung sinngemäß lautete: "Ich will da keine weiße Seite mit ungestylter Fehlermeldung mehr sehen! Damminomol!" haben wir eine generelle Lösung gesucht.
NGINX-Konfiguration
Die Fehler werden in der jeweiligen Server-Konfiguration vorgenommen:
server {
listen …
server_name …
error_page 500 501 502 503 504 401 403 /error.html;
location = /error.html {
root /var/www/vhosts/demo-host/htdocs/sorry;
internal;
}
# bad gateway testen
location = /bad-gateway {
fastcgi_pass unix:/non/existent/path;
}
# Im Falle eines reverse proxies müssen die Fehler weitergereicht werden:
location / {
proxy_pass …
proxy_intercept_errors on;
}
}
Die HTML-Datei kann beliebige Inhalte enthalten – falls externe Ressourcen (Bilder, Fonts) verwendet werden, müssen diese natürlich in der NGINX-Konfiguration berücksichtigt werden.