简单测试一下缓存
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仍是会被执行。代理