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