nginx 获取body参数_nginx获取request_body

需求与问题

工作中经常接到在nginx日志中打印出post请求的body数据的需求,也就是打印出$request_body。而直接在log_format中添加$request_body,经常会得到空值。

问题原因

查看官网中对$request_body的描述,

$request_body

request body

The variable’s value is made available in locations processed by the proxy_pass, fastcgi_pass, uwsgi_pass, and scgi_pass directives when the request body was read to a memory buffer.

只有在location中用到proxy_pass, fastcgi_pass, uwsgi_pass或者scgi_pass指令时,request body才会被读取到内存缓冲区中,$request_body变量才有值。

进一步查找网上文章,request_body在未运行上面所说的proxy_pass等指令配置时,默认会被赋值为空

1

2

3(gdb) p r->request_body

$1 = (ngx_http_request_body_t *) 0x0

(gdb)

nginx中读取POST数据必须要调用ngx_http_read_client_request_body()函数,而默认情况下,这个函数是不会被调用的。

遇到返回request_body为空的,如果配置没有问题,一般是没有用到上面所列出的proxy_pass等代理配置的,直接return了状态码或者静态资源。例如前端

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值