1

我有一个具有单个位置的 openresty 服务器,我需要在其中向 redis 数据库发送 POST/GET 请求正文。

这是一个配置片段:

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;

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

4

1 回答 1

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
';
于 2017-04-03T16:17:14.087 回答