如何优雅打印nginx header和body

简介: 场景 参考https://segmentfault.com/a/1190000000606867可以获取response的报文体,由于业务测试有获取响应头Header或响应体Body的需求,这里是通过header_filter_by_lua来分配响应报文头给变量实现的。

场景

参考https://segmentfault.com/a/1190000000606867可以获取response的报文体,由于业务测试有获取响应头Header或响应体Body的需求,这里是通过header_filter_by_lua来分配响应报文头给变量实现的。

nginx配置

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    log_format log_req_resp '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent" $request_time req_body:"$request_body"' 
        ' resp_body:"$resp_body" resp_header:"$resp_header"';

    server {
        listen 8082;
        access_log logs/access.log log_req_resp;

        set $resp_header "";
        header_filter_by_lua '
            local h = ngx.resp.get_headers()
            for k, v in pairs(h) do
            ngx.var.resp_header=ngx.var.resp_header..k..": "..v
            end
        ';

        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
        ';

        location / {
            echo "Hello World!";
        }
    }
}

然后access日志里就有啦~

谋胆并重
目录
相关文章
|
应用服务中间件 nginx
nginx优化:URI过长或request header过大导致400或414报错
当出现URI过长或请求头过大导致400或414报错时,可以通过以下方式对Nginx进行优化: 1. 调整client_max_body_size参数:该参数用于限制请求体的大小。默认情况下,Nginx的client_max_body_size参数设置为1M。如果请求体超过这个大小,Nginx会返回400错误。您可以根据实际需求适当增加这个值,例如设置为10M或更大。 ``` http { client_max_body_size 10M; } ``` 2. 调整large_client_header_buffers参数:该参数用于调整请求头缓冲区的大
4299 0
|
应用服务中间件 nginx
nginx输入请求的header和body到日志
nginx输入请求的header和body到日志
677 1
|
7月前
|
JSON 应用服务中间件 nginx
在Nginx日志中记录请求的header和请求body
在Nginx日志中记录请求的header和请求body
917 0
|
应用服务中间件 nginx
nginx输入请求的header到日志
nginx输入请求的header到日志
652 1
|
应用服务中间件 nginx
nginx输入请求的body到日志
nginx输入请求的body到日志
524 0
|
应用服务中间件 nginx
springcloud gateway nginx header 丢失
默认的情况下nginx引用header变量时不能使用带下划线的变量
576 0
|
应用服务中间件 开发工具 nginx
Nginx自定义携带header头
开发小程序时在header中添加参数被nginx进行拦截
2489 0
|
存储 机器学习/深度学习 应用服务中间件
|
应用服务中间件 nginx
|
1月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
79 7
下一篇
DataWorks