
Hier ist ein Ausschnitt meiner Nginx-Konfiguration:
server {
error_page 500 /errors/500.html;
}
Wenn ich in meiner Anwendung einen 500-Fehler verursache, zeigt Chrome einfach seine Standard-500-Seite an (Firefox und Safari zeigen eine leere Seite) und nicht meine benutzerdefinierte Fehlerseite.
Ich weiß, dass die Datei existiert, weil ich sie aufrufen http://server/errors/500.html
und sehen kann. Ich kann die Datei auch in das Dokumentstammverzeichnis verschieben und die Konfiguration folgendermaßen ändern:
server {
error_page 500 /500.html;
}
und Nginx stellt die Seite korrekt bereit. Es scheint also nicht so, als ob auf dem Server eine andere Fehlkonfiguration vorliegt.
Ich habe auch versucht:
server {
error_page 500 $document_root/errors/500.html;
}
Und:
server {
error_page 500 http://$http_host/errors/500.html;
}
Und:
server {
error_page 500 /500.html;
location = /500.html {
root /path/to/errors/;
}
}
ohne Erfolg.
Ist das das erwartete Verhalten? Müssen Fehlerseiten im Dokumentstamm vorhanden sein oder übersehe ich etwas Offensichtliches?
Aktualisierung 1:Auch dies schlägt fehl:
server {
error_page 500 /foo.html;
}
when foo.html
existiert tatsächlich im Dokumentstamm. Es scheint fast so, als würde etwas anderes meine Konfiguration überschreiben, aber dieser Block ist die einzige Stelle, /etc/nginx/*
die auf die error_page
Direktive verweist.
Gibt es einen anderen Ort, an dem die Nginx-Konfiguration festgelegt werden kann?
Antwort1
Versuchen Sie hinzuzufügen
proxy_intercept_errors on;
oder
fastcgi_intercept_errors on;
im Serverblock, abhängig von Ihrer Konfiguration.
Diese Art von Konfiguration funktioniert einwandfrei:
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/static/pages;
}
Antwort2
Versuche dies:
Server { Fehlerseite 500 =200 /errors/500.html; }
Dies sollte den HTTP-Status 200 senden, damit der Browser Ihre Seite anzeigt. Mit dem Standardstatus (500) zeigt der Browser wahrscheinlich seine eigene Fehlerseite an und ignoriert Ihren Inhalt, selbst wenn er vom Server gesendet wird.
Grüße, Adam