2014-06-24 14 views
15

W tytule tego pytania w jaki sposób mogę rejestrować wszystkie nagłówki, które przeglądarka klienta wysłała w Nginx? Chcę również zarejestrować nagłówek odpowiedzi. Zauważ, że używam nginx jako reverse proxy.Jak rejestrować wszystkie nagłówki w nginx?

Po przejrzeniu dokumentacji rozumiem, że mogę zarejestrować konkretny nagłówek, ale chcę zalogować wszystkie nagłówki.

Zaakceptuję hacky rozwiązanie!

+2

Poprawne nagłówki http mogą być bardzo długie i zapisać je w pliku nginx access.log, co jest złym pomysłem. Jeśli potrzebujesz tego do debugowania czegoś, użyj tcpdump z filtrami. –

+0

@mr_tron Rozumiem. Ale jestem ograniczony pewnymi ograniczeniami i naprawdę muszę zalogować wszystkie nagłówki HTTP w nginx dla projektu proof of concept. Jeśli nie jest to możliwe z nginxem, rzeczywiście pójdę z innymi opcjami. – gauravphoenix

+0

Ogólne nie jest możliwe, ale możesz napisać moduł :) –

Odpowiedz

8

Po wielu badaniach mogę stwierdzić, że nie jest to możliwe po wyjęciu z pudełka.

Aktualizacja - można użyć openresty, który jest dostarczany z Lua. Używając Lua można robić całkiem fajne rzeczy, w tym rejestrować wszystkie nagłówki, Redis lub inny serwer

4

Jako że @gauravphoenix powiedział, że potrzebujesz opnresty, który jest dostarczany z Lua. Aby go zainstalować, zobacz https://github.com/openresty/lua-nginx-module/. Po uruchomieniu dodaj dziennik błędów, aby dodać dziennik nginx

header_filter_by_lua_block { 
    local h = ngx.req.get_headers() 
    for k, v in pairs(h) do 
    ngx.log(ngx.ERR, "Got header "..k..": "..v..";") 
    end 
} 

.

Powiązane problemy