Nginx 将 POST/GET 请求体放入变量

Nginx put POST/GET request body to variable

我有一个只有一个位置的 openresty 服务器,我需要在其中 RPUSH POST/GET 请求正文到 redis 数据库。

这是一个配置片段:

map $request_method $query {
    "GET"           $request;
    "POST"          $request_body;
}

...

location /test {
    redis2_query rpush $key $query;
    redis2_pass redis6379:6379;
}

但是,如果它得到 POST 请求,$query 似乎是空的。

access_by_lua 'ngx.req.read_body()';

echo_read_request_body;

似乎没有帮助。在此先感谢您提供任何帮助。

set $query "";

rewrite_by_lua '
    local method = ngx.var.request_method
    if method == "POST" then
        ngx.req.read_body()
        local data = ngx.req.get_body_data()
        ngx.var.query = data.."&ng_ua="..ngx.var.http_user_agent.."&ng_ip="..ngx.var.remote_addr.."&ng_ip="..ngx.var.time_local
    elseif method == "GET" then
        local data = ngx.var.query_string
        ngx.var.query = data.."&ng_ua="..ngx.var.http_user_agent.."&ng_ip="..ngx.var.remote_addr.."&ng_ip="..ngx.var.time_local
    end
';