Nginx Log Post: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| Строка 12: | Строка 12: | ||
log_format postdata escape=json '"$request" $status' |
log_format postdata escape=json '"$request" $status' |
||
' [REQUEST BODY]: $request_body'; |
' [REQUEST BODY]: $request_body'; |
||
| + | </PRE> |
||
| + | |||
| + | =Логгирование ответа от backend/upstream= |
||
| + | Иногода (обычно для дебага) нужно логгировать не только запросы но и ответы от бекенда |
||
| + | <BR>Сделать это на "голом" nginx у меня не получилось - только используя Lua. |
||
| + | <BR>Другими словами в некоторых сборках обрадов докер может потребоваться замена версии nginx. |
||
| + | |||
| + | <PRE> |
||
| + | http { |
||
| + | ... |
||
| + | log_format bodylog '$remote_addr - $remote_user [$time_local] ' |
||
| + | '"$request" $status $body_bytes_sent ' |
||
| + | '"$http_referer" "$http_user_agent" $request_time ' |
||
| + | '<"$request_body" >"$resp_body"'; |
||
| + | |||
| + | lua_need_request_body on; |
||
| + | |||
| + | set $resp_body ""; |
||
| + | body_filter_by_lua ' |
||
| + | local resp_body = string.sub(ngx.arg[1], 1, 1000) |
||
| + | ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body |
||
| + | if ngx.arg[2] then |
||
| + | ngx.var.resp_body = ngx.ctx.buffered |
||
| + | end |
||
| + | '; |
||
| + | ... |
||
| + | } |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | server { |
||
| + | listen 1.2.3.4; |
||
| + | |||
| + | location / { |
||
| + | proxy_pass http://127.0.0.1:3000; |
||
| + | access_log /var/log/nginx/server.log bodylog; |
||
| + | } |
||
</PRE> |
</PRE> |
||
Версия 13:19, 5 августа 2021
Nginx Log POST
Иногдя нужно логгирировать (обычно для дебага) что отправляют через POST
Вот пример
log_format postdata escape=json '"$request" $status'
' [REQUEST BODY]: $request_body';
Логгирование ответа от backend/upstream
Иногода (обычно для дебага) нужно логгировать не только запросы но и ответы от бекенда
Сделать это на "голом" nginx у меня не получилось - только используя Lua.
Другими словами в некоторых сборках обрадов докер может потребоваться замена версии nginx.
http {
...
log_format bodylog '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" $request_time '
'<"$request_body" >"$resp_body"';
lua_need_request_body on;
set $resp_body "";
body_filter_by_lua '
local resp_body = string.sub(ngx.arg[1], 1, 1000)
ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
if ngx.arg[2] then
ngx.var.resp_body = ngx.ctx.buffered
end
';
...
}
server {
listen 1.2.3.4;
location / {
proxy_pass http://127.0.0.1:3000;
access_log /var/log/nginx/server.log bodylog;
}