Как записывать все заголовки в nginx?
В соответствии с заголовком этого вопроса, как мне вести регистрацию всех браузеров клиентских браузеров, отправленных в Nginx? Я также хочу записать заголовок ответа. Обратите внимание, что я использую nginx в качестве обратного прокси.
После прохождения документации я понимаю, что могу зарегистрировать определенный заголовок, но я хочу записать все заголовки.
Я согласен с хакерским решением!
Ответы
Ответ 1
После долгих исследований я могу заключить, что это невозможно из коробки.
Обновление - вы можете использовать openresty, который поставляется с Lua. Используя Lua, можно сделать довольно классные вещи, включая ведение журнала всех заголовков, чтобы сказать Redis или какой-либо другой сервер
Ответ 2
Как сказал @gauravphoenix, вам нужны опнрести, которые идут с Lua. Смотрите https://github.com/openresty/lua-nginx-module/ для его установки. Как только он запустится, добавьте 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
}
Проверьте ваш журнал ошибок.
Ответ 3
Основываясь на ответе @user1778602, set_by_lua может использоваться для установки всех заголовков в переменную, которая будет использоваться позже в log_format. Следующее устанавливает все заголовки в переменной "$ request_headers"
set_by_lua $request_headers '
local h = ngx.req.get_headers()
local request_headers_all = ""
for k, v in pairs(h) do
request_headers_all = request_headers_all .. ""..k..": "..v..";"
end
return request_headers_all
';