我的目标是检查POST请求的主体并将其与nginx上的某些键值对列表进行比较。在我的情况下,POST请求将始终采用JSON格式。每个请求都会包含key:value
对,如下所示:"transaction":"12345"
或"transaction":"098765"
。意味着关键的“交易”将永远存在,价值将会改变一段时间。
我正在考虑使用lua-nginx-module检查一个帖子正文,然后将其与来自memcached
的键值进行比较。
我还没有任何代码可以显示,但我会尽快更新一个问题。我想知道是否有人可以帮助我开始,或者展示如何做到这一点。
答案 0 :(得分:3)
根据您的需要,有多种方法可以检查ngx_lua中的POST请求主体:
全缓冲方式:使用ngx.req.read_body,ngx.req.get_body_data和ngx.req.get_body_file。
流处理方式:使用ngx.req.socket以块的形式读取和处理请求正文流。
答案 1 :(得分:2)
这就是我所做的:
server {
listen 80;
location /api/setdata {
lua_need_request_body on;
content_by_lua_file template/content.lua;
}
}
template / content.lua:
function processRequest()
ngx.req.read_body()
local request_body = ngx.req.get_body_data()
ngx.say(request_body)
end
答案 2 :(得分:0)
使用以下内容即可:
ngx.req.read_body()
local request_body = ngx.req.get_body_data()
也不需要使用lua_need_request_body on;
伪指令,因为它的作用与ngx.req.read_body()
相同。