openresty 提供的几个新的生命周期阶段指令

实际上这几个指令很早就有了,只是最近在重新学习openresty 的时候发现的

exit_worker_by_lua_*

在每次nginx worker 进程退出的时候执行,当master 进行禁用的时候,这个钩子会在nginx 进程退出之前执行
主要的场景是进行资源释放,以及worker 非正常退出

server_rewrite_by_lua_*

在server rewrite 阶段的处理,对于每个请求都会执行,同时也会包含时候是子请求状态,同时我们也可以调用暴露的
lua api,注意会使用独立的协程(类似沙箱环境)对于共享的可以使用ctx 以及shared 字典,或者db
注意如果为了退出当前请求,ngx.exit(ngx.OK) 是不起作用的,需要使用ngx.exit 对于状态码泗洪>=200 <300 代表正常,ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
表示执行失败

说明

以上几个新指令还是比较有用的,很值得尝试下

参考资料

https://github.com/openresty/lua-nginx-module#exit_worker_by_lua_block

posted on 2022-05-01 19:45  荣锋亮  阅读(372)  评论(0编辑  收藏  举报

导航