天天看點

Nginx:openresty下使用lua腳本擷取常用資訊。擷取Nginx uri中的單一變量擷取Nginx uri中的所有變量擷取Nginx請求頭資訊擷取post請求參數http協定版本請求方法原始的請求頭内容body内容體

擷取Nginx uri中的單一變量

location /nginx_var {

         default_type text/html;

        content_by_lua_block {

            ngx.say(ngx.var.arg_a)

        }
    }
           

擷取Nginx uri中的所有變量

local uri_args = ngx.req.get_uri_args()  

for k, v in pairs(uri_args) do  

    if type(v) == "table" then  

        ngx.say(k, " : ", table.concat(v, ", "), "<br/>")  

    else  

        ngx.say(k, ": ", v, "<br/>")  

    end  
end
           

擷取Nginx請求頭資訊

local headers = ngx.req.get_headers()                         

ngx.say("Host : ", headers["Host"], "<br/>")  

ngx.say("user-agent : ", headers["user-agent"], "<br/>")  

ngx.say("user-agent : ", headers.user_agent, "<br/>")

for k,v in pairs(headers) do  

    if type(v) == "table" then  

        ngx.say(k, " : ", table.concat(v, ","), "<br/>")  

    else  

        ngx.say(k, " : ", v, "<br/>")  

    end  

end  
           

擷取post請求參數

ngx.req.read_body()  

ngx.say("post args begin", "<br/>")  

local post_args = ngx.req.get_post_args()  

for k, v in pairs(post_args) do  

    if type(v) == "table" then  

        ngx.say(k, " : ", table.concat(v, ", "), "<br/>")  

    else  

        ngx.say(k, ": ", v, "<br/>")  

    end  
end
           

http協定版本

ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "<br/>")
           

請求方法

ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "<br/>")  
           

原始的請求頭内容

ngx.say("ngx.req.raw_header : ",  ngx.req.raw_header(), "<br/>")  
           

body内容體

ngx.say("ngx.req.get_body_data() : ", ngx.req.get_body_data(), "<br/>")
           
下一篇: nginx和lua

繼續閱讀