如何检查nginx中的POST主体(HttpLuaModule)

问题描述 投票:3回答:2

我的目标是检查POST请求的主体并将其与nginx上的某些键值对列表进行比较。在我的情况下,POST请求将始终采用JSON格式。每个请求都包含一个像这样的key:value对:"transaction":"12345""transaction":"098765"。意味着关键的“交易”将永远存在,价值将会改变一段时间。我当时想用lua-nginx-module来检查一个帖子的身体,然后把它与来自memcached的键值进行比较。我还没有任何代码可以显示,但我会尽快更新一个问题。我想知道是否有人可以帮助我开始,或者展示它是如何完成的。

post nginx lua
2个回答
3
投票

根据您的需要,有多种方法可以检查ngx_lua中的POST请求正文:

  1. 完全缓冲的方式:使用ngx.req.read_bodyngx.req.get_body_datangx.req.get_body_file
  2. 流处理方式:使用ngx.req.socket以块的形式读取和处理请求正文流。

2
投票

这就是我做的:

server {
        listen 80;
        location /api/setdata {           
            lua_need_request_body on;
            content_by_lua_file template/content.lua;
        }       
    }

模板/ content.lua:

function processRequest()
    ngx.req.read_body()
    local request_body = ngx.req.get_body_data()  
    ngx.say(request_body)
end
© www.soinside.com 2019 - 2024. All rights reserved.