2017-04-03 60 views
0

我有一個openresty服務器和一個單一位置,其中我需要將RPUSH POST/GET請求正文放到redis數據庫中。Nginx將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;

似乎並不幫忙。預先感謝任何幫助。

回答

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