Nginx将POST / GET请求体放到变量中

时间:2017-04-03 09:10:19

标签: nginx lua openresty

我有一个具有单一位置的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;

似乎没有帮助。提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:1)

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
';