lua執行步驟
init_by_lua/init_by_lua_file:
在nginx初始化配置的時候,執行該lua指令碼,常用語初始化全域性變數
一些長連線的初始化,一般存放在這個位置,或者共享記憶體的初始化,只有nginx重啟後,共享記憶體資料才會清空
lua_shared_dict dogs 1m;
init_by_lua '
local dogs = ngx.shared.dogs;
dogs:set("tom", 56)
'; server
}
set_by_lua/set_by_lua_file:
設定乙個變數,常用於計算乙個邏輯,然後返回結果
另外可以將已有的nginx變數當做引數傳遞到lua指令碼裡
location /foo
rewrite_by_lua/rewrite_by_lua_file:
執行內部url重寫或者外部重定向,預設執行在rewrite處理階段的最後
location = /check-spam
location /
access_by_lua/access_by_lua_file:
主要用於訪問控制,如只允許內網ip才能訪問,能收集到大部分變數,類似status需要在log階段才有
location / )
...';
# proxy_pass/fastcgi_pass/...
}
content_by_lua/content_by_lua_file:
該階段是所有請求處理階段中最為重要的乙個,執行在這個階段的指令碼一般都用於生成內容並輸出http相應
location /other
location /lua );
ngx.print(res.body)
ngx.say(ngx.var.uri, ": ", ngx.var.dog)
';}request get /lua will give the output
/other dog: hello world
/lua: hello
header_filter_by_lua/header_filter_by_lua_file:
一般只用於設定cookie和header等
body_filter_by_lua/body_filter_by_lua_file:
一般會在一次請求中被呼叫多次
log_by_lua/log_by_lua_file:
該階段執行在請求結束的時候,用於請求的後續操作
lua_shared_dict log_dict 5m;
server
location = /status
}
nginx執行步驟(共十乙個步驟)
post-read:
讀取請求內容階段
nginx讀取並解析完請求頭之後就立即開始執行
server-rewrite
server請求位址重寫階段
find-config
配置查詢階段
rewrite
location請求位址重寫階段
post-rewrite
請求位址重寫提交階段
preaccess
訪問許可權檢查準備階段
access
訪問許可權檢查階段
post-access
訪問許可權檢查提交階段
try-files
配置項try_files處理階段
content
內容產生階段
log
日誌模組處理階段
記錄日誌
Lua順序 執行順序
nginx下lua處理階段與使用範圍 例如lua shared dict共享記憶體的申請,只有當nginx重起後,共享記憶體資料才清空,這常用於統計。set by lua 設定乙個變數,常用與計算乙個邏輯,然後返回結果 該階段不能執行output api control api subrequest...
try catch finally的執行順序
try catch finally的執行順序 1 將預見可能引發異常的 包含在try語句塊中。2 如果發生了異常,則轉入catch的執行。catch有幾種寫法 catch 這將捕獲任何發生的異常。catch exception e 這將捕獲任何發生的異常。另外,還提供e引數,你可以在處理異常時使用e...
命令的執行順序
1.在執行某個命令的時候,有時依賴前乙個命令是否成功。例如假設你希望 將乙個目錄中的檔案全部拷貝到另外乙個目錄中後,然後刪除源目錄中的全部檔案。在刪除之前,你希望能夠確信拷貝成功,否則就有可能丟失所有的檔案。2.使用 命令 命令1 命令2 左邊的命令返回真 及返回0,成功被執行 右邊的命令才能被執行...