我有一个具有单一位置的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;
似乎没有帮助。提前感谢您的任何帮助。
答案 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
';