Nginx add_header dla strony 50 *


19

Obecnie próbuję przekonać nginx do dodania nagłówka do odpowiedzi, gdy wysyła jakiś błąd 50 *. Mam już dyrektywę add_header w bloku http, która jest respektowana dla wszystkich żądań, z wyjątkiem błędów. Próbowałem również następujące w jednym z moich vhostów:

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

Przejście do tej strony daje mi 502, ale nie nagłówek. Czy to po prostu coś, czego Nginx nie robi, czy robię to źle?


Czy możesz opublikować wynik $ curl -I <url> // mediocregopheristhecoolest
Chida

Odpowiedzi:


21

Dokumentacja stwierdza, że ​​add_header „Dodaje określone pole do nagłówka odpowiedzi, pod warunkiem, że kod odpowiedzi wynosi 200, 204, 206, 301, 302, 303, 304 lub 307. Wartość może zawierać zmienne.” Więc to nie działa z 502.

Zapomniałem dodać, że możesz użyć modułu więcej nagłówków innych firm , aby dodać nagłówki do innych kodów. Prawdopodobnie będziesz musiał jednak ponownie skompilować, aby go dodać.


Zobacz komentarz marat: nowa wersja nginx obsługuje ustawianie nagłówka niezależnie od kodu odpowiedzi
Laurens Rietveld

44

Od wersji Nginx 1.7.5 możesz alwaysdodawać nagłówki niezależnie od kodu odpowiedzi:

add_header X-Test "blahblahblah" always;

1
Frustrujące jest to, że wersja repozytoriów Debiana jest obecnie nieaktualna (1.6.x), ale nginx utrzymuje własne repozytorium z najnowszą stabilną wersją (obecnie 1.8.x).
kungphu

Jeśli chcesz, aby uaktualnić system Debian już pracuje, Debian backporty jest bezpieczniej ... packages.debian.org/jessie-backports/httpd/nginx upstream użyciu pakiet inną organizację pakietu (może powodować przestoje zamiast gładkiego nginx uaktualnić mechanizm ). A jego skrypt postrm usuwa dzienniki. I kilka innych drobnych różnic ...
Lajos Veres
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.