簡單測試一下緩存
location = /mixed { set_by_lua $a 'ngx.log(ngx.ERR, "set_by_lua")'; rewrite_by_lua 'ngx.log(ngx.ERR, "rewrite_by_lua")'; access_by_lua 'ngx.log(ngx.ERR, "access_by_lua")'; header_filter_by_lua 'ngx.log(ngx.ERR, "header_filter_by_lua")'; body_filter_by_lua 'ngx.log(ngx.ERR, "body_filter_by_lua")'; log_by_lua 'ngx.log(ngx.ERR, "log_by_lua")'; content_by_lua 'ngx.log(ngx.ERR, "content_by_lua")'; }
執行結果日誌(截取了一下):異步
set_by_lua rewrite_by_lua access_by_lua content_by_lua header_filter_by_lua body_filter_by_lua log_by_lua
這樣咱們就能夠根據咱們的須要,在不一樣的階段直接完成大部分典型處理了。測試
注意access_by_lua 若是執行了ngx.say, 那麼content_by_lua就不會執行,也就是access_by_lua其實能夠代替content_by_lualua
在access_by_lua 階段執行ngx.exit, 並不會中斷整個請求,只會跳過content_by_lua 階段,後面的header_filter_by_lua和body_filter_by_lua仍是會被執行。代理