Nginx add_header für eine 50 * Seite

19

Ich versuche derzeit, Nginx zu veranlassen, der Antwort einen Header hinzuzufügen, wenn eine Art 50 * -Fehler gesendet wird. Ich habe bereits eine add_header-Direktive im http-Block, die für alle Anfragen berücksichtigt wird, außer es scheint Fehler zu geben. Ich habe auch folgendes in einem meiner vhosts ausprobiert:

location /mediocregopheristhecoolest {
    add_header X-Test "blahblahblah";
    return 502;                                                                                                    
}       

Wenn ich auf diese Seite gehe, erhalte ich eine 502, aber keinen Header. Ist das einfach etwas, was Nginx nicht macht, oder mache ich es falsch?

Mittelmäßiger Gopher
quelle
Könnten Sie die Ausgabe von $ curl -I <url> // mediocregopheristhecoolest
Chida

Antworten:

21

In der Dokumentation heißt es: add_header "Fügt das angegebene Feld einem Antwortheader hinzu, sofern der Antwortcode 200, 204, 206, 301, 302, 303, 304 oder 307 entspricht. Ein Wert kann Variablen enthalten." Bei einem 502 funktioniert das also nicht.

Ich habe vergessen hinzuzufügen, dass Sie das Modul " Third Party Headers More" verwenden können , um Header zu anderen Codes hinzuzufügen. Sie müssen wahrscheinlich neu kompilieren, um es hinzuzufügen.

kolbyjack
quelle
Siehe Kommentar von marat: Die neue Nginx-Version unterstützt das Setzen des Headers unabhängig vom Antwortcode
Laurens Rietveld
44

Seit Nginx 1.7.5 können Sie alwaysunabhängig vom Antwortcode einen Header hinzufügen:

add_header X-Test "blahblahblah" always;
marat
quelle
1
Leider ist die Version in Debians Repos derzeit veraltet (1.6.x), aber nginx unterhält ein eigenes Repository mit dem neuesten stabilen Build (1.8.x im Moment).
Kungphu
Wenn Sie ein bereits funktionierendes Debian-System aktualisieren möchten, ist Debian-Backports sicherer ... packages.debian.org/jessie-backports/httpd/nginx Das Upstream-Paket verwendet eine andere Paketorganisation (kann zu Ausfallzeiten anstelle des reibungslosen Nginx-Upgrade-Mechanismus führen) ). Und sein postrm-Skript entfernt die Protokolle. Und ein paar andere kleine Unterschiede ...
Lajos Veres