nginx 變量,若是要賦值如 ngx.var.b = 2,此變量必須提早聲明;另外對於 nginx location 中使用正則捕獲的捕獲組可使用 ngx.var [捕獲組數字]獲取;html
獲取請求頭,默認只獲取前100,若是想要獲取因此能夠調用ngx.req.get_headers(0);獲取帶中劃線的請求頭時請使用如 headers.user_agent 這種方式;若是一個請求頭有多個值,則返回的是 table;nginx
獲取 url 請求參數,其用法和 get_headers 相似;git
獲取 post 請求內容體,其用法和 get_headers 相似,可是必須提早調用 ngx.req.read_body() 來讀取 body 體(也能夠選擇在 nginx 配置文件使用lua_need_request_body on;開啓讀取 body 體,可是官方不推薦);github
未解析的請求頭字符串;正則表達式
爲解析的請求 body 體內容字符串。api
重定向;post
設置響應的狀態碼;編碼
獲取設置的響應狀態碼;lua
發送響應狀態碼,當調用 ngx.say/ngx.print 時自動發送響應狀態碼;能夠經過 ngx.headers_sent=true 判斷是否發送了響應狀態碼。url
uri 編碼解碼;
參數編碼解碼;
BASE64 編碼解碼;
nginx 正則表達式匹配;
--nginx變量 local var = ngx.var ngx.say("ngx.var.a : ", var.a, "<br/>") ngx.say("ngx.var.b : ", var.b, "<br/>") ngx.say("ngx.var[2] : ", var[2], "<br/>") ngx.var.b = 2; ngx.say("<br/>") --請求頭 local headers = ngx.req.get_headers() ngx.say("headers begin", "<br/>") 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 ngx.say("headers end", "<br/>") ngx.say("<br/>") --get請求uri參數 ngx.say("uri args begin", "<br/>") 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 ngx.say("uri args end", "<br/>") ngx.say("<br/>") --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 ngx.say("post args end", "<br/>") ngx.say("<br/>") --請求的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/>") ngx.say("<br/>") --未經解碼的請求uri local request_uri = ngx.var.request_uri; ngx.say("request_uri : ", request_uri, "<br/>"); --解碼 ngx.say("decode request_uri : ", ngx.unescape_uri(request_uri), "<br/>"); --MD5 ngx.say("ngx.md5 : ", ngx.md5("123"), "<br/>") --http time ngx.say("ngx.http_time : ", ngx.http_time(ngx.time()), "<br/>")
--寫響應頭 ngx.header.a = "1" --多個響應頭可使用table ngx.header.b = {"2", "3"} --輸出響應 ngx.say("a", "b", "<br/>") ngx.print("c", "d", "<br/>") --200狀態碼退出 return ngx.exit(200) ngx.header:輸出響應頭; ngx.print:輸出響應內容體; ngx.say:通ngx.print,可是會最後輸出一個換行符; ngx.exit:指定狀態碼退出。