摘要:重定向狀態碼設置響應的狀態碼獲取設置的響應狀態碼發送響應狀態碼,當調用時自動發送響應狀態碼可以通過判斷是否發送了響應狀態碼。
基本api ngx.var
nginx 變量,如果要賦值如 ngx.var.b = 2,此變量必須提前聲明;另外對于 nginx location 中使用正則捕獲的捕獲組可以使用 ngx.var [捕獲組數字]獲取;
ngx.req.get_headers獲取請求頭,默認只獲取前100,如果想要獲取所以可以調用ngx.req.get_headers(0);獲取帶中劃線的請求頭時請使用如 headers.user_agent 這種方式;如果一個請求頭有多個值,則返回的是 table;
ngx.req.get_uri_args獲取 url 請求參數,其用法和 get_headers 類似;
ngx.req.get_post_args獲取 post 請求內容體,其用法和 get_headers 類似,但是必須提前調用 ngx.req.read_body() 來讀取 body 體(也可以選擇在 nginx 配置文件使用lua_need_request_body on;開啟讀取 body 體,但是官方不推薦);
ngx.req.raw_header未解析的請求頭字符串;
ngx.req.get_body_data為解析的請求 body 體內容字符串。
ngx.redirect重定向;
ngx.status= 狀態碼設置響應的狀態碼;
ngx.resp.get_headers()獲取設置的響應狀態碼;
ngx.send_headers()發送響應狀態碼,當調用 ngx.say/ngx.print 時自動發送響應狀態碼;可以通過 ngx.headers_sent=true 判斷是否發送了響應狀態碼。
ngx.escape_uri/ngx.unescape_uriuri 編碼解碼;
ngx.encode_args/ngx.decode_args參數編碼解碼;
ngx.encode_base64/ngx.decode_base64BASE64 編碼解碼;
ngx.re.matchnginx 正則表達式匹配;
var及req實例--nginx變量 local var = ngx.var ngx.say("ngx.var.a : ", var.a, "resp實例
") ngx.say("ngx.var.b : ", var.b, "
") ngx.say("ngx.var[2] : ", var[2], "
") ngx.var.b = 2; ngx.say("
") --請求頭 local headers = ngx.req.get_headers() ngx.say("headers begin", "
") ngx.say("Host : ", headers["Host"], "
") ngx.say("user-agent : ", headers["user-agent"], "
") ngx.say("user-agent : ", headers.user_agent, "
") for k,v in pairs(headers) do if type(v) == "table" then ngx.say(k, " : ", table.concat(v, ","), "
") else ngx.say(k, " : ", v, "
") end end ngx.say("headers end", "
") ngx.say("
") --get請求uri參數 ngx.say("uri args begin", "
") 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, ", "), "
") else ngx.say(k, ": ", v, "
") end end ngx.say("uri args end", "
") ngx.say("
") --post請求參數 ngx.req.read_body() ngx.say("post args begin", "
") 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, ", "), "
") else ngx.say(k, ": ", v, "
") end end ngx.say("post args end", "
") ngx.say("
") --請求的http協議版本 ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "
") --請求方法 ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "
") --原始的請求頭內容 ngx.say("ngx.req.raw_header : ", ngx.req.raw_header(), "
") --請求的body內容體 ngx.say("ngx.req.get_body_data() : ", ngx.req.get_body_data(), "
") ngx.say("
") --未經解碼的請求uri local request_uri = ngx.var.request_uri; ngx.say("request_uri : ", request_uri, "
"); --解碼 ngx.say("decode request_uri : ", ngx.unescape_uri(request_uri), "
"); --MD5 ngx.say("ngx.md5 : ", ngx.md5("123"), "
") --http time ngx.say("ngx.http_time : ", ngx.http_time(ngx.time()), "
")
--寫響應頭 ngx.header.a = "1" --多個響應頭可以使用table ngx.header.b = {"2", "3"} --輸出響應 ngx.say("a", "b", "doc
") ngx.print("c", "d", "
") --200狀態碼退出 return ngx.exit(200) ngx.header:輸出響應頭; ngx.print:輸出響應內容體; ngx.say:通ngx.print,但是會最后輸出一個換行符; ngx.exit:指定狀態碼退出。
Nginx+Lua 開發入門
lua-nginx-module#readme
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39369.html
摘要:例如響應部分通過的形式獲取或設置響應頭信息。以某個狀態碼返回響應內容,狀態碼常量對應關系見部分,也支持數字形式的狀態碼。重定向當前請求到新的,響應狀態碼可選列表為默認。具體內容如下相關文章進入的世界在的應用 首發于 樊浩柏科學院 當 Nginx 標準模塊和配置不能靈活地適應系統要求時,就可以考慮使用 Lua 擴展和定制 Nginx 服務。OpenResty 集成了大量精良的 Lua 庫...
摘要:對于需要進一步注意的是參數的使用,可以傳入所定義的所有的狀態碼常量如等和兩個模塊內核常量只支持和這兩個,如果傳入其他的如等則進程住。 序 本文主要解讀下nginx lua module的主要方法和api。 ngx_lua運行階段 showImg(https://segmentfault.com/img/bVHFqI?w=1005&h=910); initialization phase...
摘要:例如設置響應狀態碼并退出注意,設置狀態碼僅在響應頭發送前有效,并且該函數調用之后該函數后面的將被忽略掉,因為已經了。 一、介紹 二、安裝 三、運行 四、開發 1. 介紹 Tengine:輕量級、高性能、高并發、配置化、模塊化、可擴展、可移植的Web和反向代理 服務器,Tengine是nginx超集,但做了很多優化,包含了很多比較有用的模塊,比如直接包含了lua、proc等很...
摘要:例如設置響應狀態碼并退出注意,設置狀態碼僅在響應頭發送前有效,并且該函數調用之后該函數后面的將被忽略掉,因為已經了。 一、介紹 二、安裝 三、運行 四、開發 1. 介紹 Tengine:輕量級、高性能、高并發、配置化、模塊化、可擴展、可移植的Web和反向代理 服務器,Tengine是nginx超集,但做了很多優化,包含了很多比較有用的模塊,比如直接包含了lua、proc等很...
摘要:異常與默認值為默認值為秒。實驗請求里頭的會發起一個,請求請求一次對逐個請求,都失敗,則的返回,對返回的取決于腳本再請求一次該下面的都掛的情況下出現中健康檢查機制深入分析容錯機制原創胡志廣線上的一次分析 異常 upstream server temporarily disabled while connecting to upstream no live upstreams while...
摘要:深度學習篇一動靜分離通過中間件將動態請求和靜態請求進行分離。原因分離資源,減少不必要的請求消耗,減少請求延時。關閉后,重定向會失效。驗證規則保持一致。啟動,也會要求你輸入密碼。根據用戶的信息等信息區別根據用戶的地址實現灰度發布示意圖 Nginx-深度學習篇 一、動靜分離 通過中間件將動態請求和靜態請求進行分離。原因:分離資源,減少不必要的請求消耗,減少請求延時。 動態和靜態請求圖例:s...
閱讀 3469·2021-09-02 09:53
閱讀 1793·2021-08-26 14:13
閱讀 2750·2019-08-30 15:44
閱讀 1313·2019-08-30 14:03
閱讀 1962·2019-08-26 13:42
閱讀 3014·2019-08-26 12:21
閱讀 1302·2019-08-26 11:54
閱讀 1899·2019-08-26 10:46