我是靠谱客的博主 懦弱导师,最近开发中收集的这篇文章主要介绍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了状态码或者静态资源。例如前端

最后

以上就是懦弱导师为你收集整理的nginx 获取body参数_nginx获取request_body的全部内容,希望文章能够帮你解决nginx 获取body参数_nginx获取request_body所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部