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