如何在 nginx (HttpLuaModule) 中检查 POST 正文

Vor*_*Vor 4 post lua nginx

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

Teo*_*ahi 8

这就是我所做的:

server {
        listen 80;
        location /api/setdata {           
            lua_need_request_body on;
            content_by_lua_file template/content.lua;
        }       
    }
Run Code Online (Sandbox Code Playgroud)

模板/content.lua:

function processRequest()
    ngx.req.read_body()
    local request_body = ngx.req.get_body_data()  
    ngx.say(request_body)
end
Run Code Online (Sandbox Code Playgroud)


小智 6

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

  1. 全缓冲方式:使用ngx.req.read_bodyngx.req.get_body_datangx.req.get_body_file

  2. 流处理方式:使用ngx.req.socket分块读取并处理请求体流。