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.