要记录请求的头部(header)和正文(body)到Nginx的日志,你需要利用log_format指令定义一个包含这些字段的日志格式,并确保client_body_buffer_size指令设置得足够大以捕获整个请求body。
下面是一个示例配置:
http {
log_format custom '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$http_x_forwarded_for" "$request_body"'; access_log /var/log/nginx/access.log custom; # 其他配置... location / {
client_body_buffer_size 1M; # 其他配置... }}
在这个示例中,我们定义了一个名为custom的日志格式,它包含了远程IP地址、远程用户、请求时间、请求方法、响应状态、发送给客户端的字节数、HTTP Referer、用户代理、X-Forwarded-For头和请求正文。注意,这里的"$request_body"将会捕获请求的正文。
然后,我们将access_log指令的日志文件路径设置为/var/log/nginx/access.log,并使用之前定义的custom日志格式。
在location /块中,我们设置了client_body_buffer_size 1M;,意味着Nginx将会在内存中缓冲最多1MB的请求body。这个值可以根据你的需求进行调整。如果请求的正文大于这个值,Nginx将会返回一个413 Request Entity Too Large错误。
现在,每当有请求到达Nginx服务器时,请求的header和body内容将按照自定义的日志格式记录到指定的日志文件中。