Ich versuche, eine benutzerdefinierte 400-Fehlerseite für Nicht-HTTPS-Anforderungen in Nginx zurückzugeben. Ich bin neu bei nginx, aber ich habe viele Seiten mit Beispielen auf benutzerdefinierten Fehlerseiten gelesen und nichts scheint für mich zu funktionieren. Meine Konfiguration:
server {
listen 80;
error_page 400 /400.html;
location = /400.html {
root /var/www/html;
}
return 400;
}
Die Rückgabe funktioniert, denn wenn ich den Code ändere (z. B. auf 401 oder 500), erhalte ich die entsprechende Standard-Nginx-Fehlerseite. Ich weiß, dass die Datei existiert, denn wenn ich die Rücksendung herausnehme, wird sie meine 400.html-Seite ohne Probleme direkt bedienen. Aber nichts, was ich versucht habe, hat dazu geführt, dass meine benutzerdefinierte Seite angezeigt wird, wenn ich den Fehlercode zurückgebe.
Was vermisse ich?
Update: Andere Varianten habe ich vergeblich versucht:
server {
listen 80;
error_page 400 /400.html;
location = /400.html {
root /var/www/html;
}
return 400;
}
server {
listen 80;
root /var/www/html;
error_page 400 /400.html;
location = /400.html {
allow all;
}
return 400;
}
server {
listen 80;
root /var/www/html;
error_page 400 /400.html;
return 400;
}
quelle
default
zu Ihrer Hörzeile hinzufügen . b) Erstellen Sie einen zweiten Serverblock für SSL - ohne dass Sielisten *:443 ssl;
dem obigen Serverblock eine Zeile hinzufügen können. In beiden Fällen müssen Sie das SSL-Zertifikat und den Schlüssel angeben.400.html
Datei abgelegt? Fügen Sie eineerror_log
Direktive ein und sehen Sie sich das an.Antworten:
Ich habe diese Frage bei Stackoverflow gefunden, die genau das erreicht, wonach ich gesucht habe.
Ich denke , aus welchem Grund auch wenn eine Rückkehr innerhalb eines funktioniert Server blockieren, macht es keine respektieren error_page Richtlinien. Dies kann ein Fehler oder ein absichtliches Verhalten sein, das ich nicht verstehe. Die Lösung besteht darin, die Rückgabe in einen Standortblock einzufügen:
quelle