Lua Nginx的執行順序

2021-07-23 06:27:25 字數 2395 閱讀 8164

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,成功被執行 右邊的命令才能被執行...