Nginx中可以使用在lua块中使用ngx.req.get_body_data()获取http请求的消息体。

代码如下:

server {
     listen 7070;
     charset utf-8;
     server_name localhost;
     location ~/yxl/(.*)/(.*) {
         content_by_lua_block {
              local data = ngx.req.get_body_data()
              ngx.say(data)
         }
     }
}

但默认情况下可能会得到一个nil的结果。这是因为之前nginx的定位是消息转发,而不是处理消息体。若需要获取消息体,需要在打开获取消息体的开关。增加一行代码:lua_need_request_body on;

代码如下:

server {
     listen 7070;
     charset utf-8;
     server_name localhost;
     lua_need_request_body on;
     location ~/yxl/(.*)/(.*) {
         content_by_lua_block {
              local data = ngx.req.get_body_data()
               ngx.say(data)
         }
     }
}

如此即可顺利获取消息体的内容。

但上述方法强制本模块读取消息体,因此不推荐使用,获取消息体推荐使用以下方法,在获取消息体代码附近,增加一句ngx.req.read_body(),代码如下:

server {
     listen 7070;
     charset utf-8;
     server_name localhost;
     location ~/yxl/(.*)/(.*) {
         content_by_lua_block {

ngx.req.read_body()
              local data = ngx.req.get_body_data()
               ngx.say(data)
         }
     }
}

nginx使用ngx.req.get_body_data()获取不到请求体内容相关推荐

  1. java web获取请求体内容

    Java Web中如何获取请求体内容呢? 我们知道请求方式分为两种:Get,Post Java代码   /*** * Compatible with GET and POST * * @param r ...

  2. nginx 因POST请求体内容过大导致500,设置 client_max_body_size,client_body_buffer_size

    设置 client_max_body_size 和 client_body_buffer_size client_max_body_size 2000M;client_body_buffer_size ...

  3. Spring Cloud Gateway 之获取请求体的几种方式

    一.直接在全局拦截器中获取 伪代码如下 private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest){Flux& ...

  4. nginx的 ngx.var ngx.ctx ngx.req

    ngx.var 是获取 Nginx 的变量,需要经历字符串 hash.hash 表查找等过程 ngx.ctx 仅仅是一个 Lua table 而已,它的引用存放在 ngx_lua 的模块上下文(ctx ...

  5. nginx变量ngx.var

    ngx.var 是获取 Nginx 的变量,类型是字符串或nil,需要经历字符串 hash.hash 表查找等过程. ngx.ctx 仅仅是一个 Lua table 而已,它的引用存放在 ngx_lu ...

  6. 顺风详解Nginx系列—Ngx中的变量

    在计算机语言中,变量是用来存储和表示数据的,但不同的语言表示变量的方式不同,像java语言会把变量抽象成各种类型,并且每种类型都会用一个特殊的符号表示,比如表示一个整数需要这样: int age= 2 ...

  7. openresty获取nginx原始的请求头内容

    ngx.say("ngx.req.raw_header : ", ngx.req.raw_header(), "<br/>")

  8. Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法

    Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法 参考文章: (1)Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER ...

  9. nginx做负载CDN加速获取端真实ip

    nginx做负载CDN加速获取端真实ip在不用cdn的情况下,nginx做负载获取真实ip时,nginx配置如下:Java代码 proxy_set_header Host $host; proxy_s ...

最新文章

  1. poj1625Censored!(AC自动机+dp)
  2. Python设计模式-备忘录模式
  3. 从员工出走仅剩 5 人,到一支打胜仗的铁军
  4. boost::statechart模块无效图表测试
  5. 浅析Java的“克隆”方法[zt]
  6. 自适应/响应式网页设计
  7. MapReduce-计数器
  8. 【实用】Putty常见错误汇总
  9. springboot 数据权限_13 个最火的 SpringBoot 实战开源项目推荐!总有一个适合你!...
  10. JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
  11. Provisioning Services 7.8 入门系列教程之九 手动更新虚拟磁盘
  12. 数据结构(C语言)基础入门
  13. 研究生毕业论文查重标准是什么
  14. 求多个数的最小公倍数或最大公约数
  15. Pycharm全局搜索关键字
  16. Android6.0运行时权限(危险权限列表)
  17. IOS-UIWebView字体控制
  18. kali升级操作系统
  19. 香港科技大学人工智能医疗课题组陈浩老师招收博士生/博士后
  20. 解决WARN: Establishing SSL connection without server‘s identity verification is not recommended警告问题~

热门文章

  1. FTP服务器和NFS服务器
  2. c语言出圈问题10人,第38套题:c语言出圈问题分析.doc
  3. win7升级win10方法
  4. 使用echarts配置中国地图
  5. ap计算机科学课程内容,AP课程之“计算机科学原理”介绍
  6. 三、GNSS两种基本定位原理(1)
  7. 操作系统、输入法和编码的理解
  8. 一文带你了解 JavaScript 函数式编程
  9. 一分钟搞懂云计算和大数据对人到底有啥用?
  10. 关于怎样选择人事考勤工资软件的一些建议