我们现在解决该问题的方式,是把功能和入口分离。
每个 phase 里面相关的功能实现在单独的文件中,然后由各个入口决定加载哪些功能。
老实说,如果能支持多个 rewrite/access 阶段就更好了。从普通的开发者的角度看,这么做看上去会更加直观。
相关的 pr 其实也已经有了,是我的前同事提交的:
https://github.com/openresty/lua-nginx-module/pull/935
https://github.com/openresty/lua-nginx-module/pull/946
你可以尝试推动下,万一能够合进去呢 :)
在 2017年5月22日星期一 UTC+8下午3:06:54,nenon写道:
谢谢!
这个没问题。想放在POST_READ_PHASE的原因,还是因为想统一处理通用的,这些是全局的。
rewrite_by..., access_by... 都可以,只是这些在不同的server,已经被使用了(会继承)。
目前没想到好的方式,如果没有支持这样的phase。
2017-05-22 11:26 GMT+08:00 tokers
<zcha...@gmail.com>:
access_by_lua* 指令可以配置在 http main 配置项下的,参考
https://github.com/openresty/lua-nginx-module#access_by_luaOn Monday, May 22, 2017 at 10:10:26 AM UTC+8, nenon wrote:
server多的话就得每个都加access_by_lua,
这比较不方便。所以请教下:
1. 这个有在计划之内吗?
2. 有没有因为特殊的原因不能加这个phase,
而只是仅仅暂时没支持而已。
在 2017年5月22日星期一 UTC+8上午9:48:14,tokers写道:
ngx_lua 暂时没有提供诸如 post_read_by_lua* 的指令,所以 Lua 代码不能介入到该阶段,不过如果要对请求做统一处理,在 access_by_lua* 处理或许是个不错的主意。
On Sunday, May 21, 2017 at 7:33:46 PM UTC+8, nenon wrote:
Hi!
想了解下,想在NGX_HTTP_POST_READ_PHASE阶段使用lua代码。
nginx-lua-module没有提供这样的API是有特殊的考虑吗?
应用场景:
对所有的请求统一做处理, 如果能在http层就很方便了,比如:
http {
xxx_by_lua_block {
-- run in post read phase
}
server {
...
}
server {
...
}
}
谢谢!
--