Hello!
2016-05-16 0:48 GMT-07:00 Rye Yao:
> 看了几遍代码,还是有一些疑惑:
>
> stream 子系统中阶段的执行顺序是在何处控制的?nginx core, stream 还是
> stream-lua-nginx-module?如何使自己的 directive 在某个阶段被调用?
这里的执行顺序都是由 ngnx 核心的 stream 子系统的 ngx_stream_init_connection 这个 C 函数来实现的。看那个函数就好了。
> stream 中 lua access handler 应该注册到哪里?我尝试在 directive 中实现
> ngx_stream_lua_access_by_lua 时将 access_handler 注册到
> ngx_stream_core_srv_conf_t->handler 或
> ngx_stream_core_main_conf_t->access_handler 中,但前者会覆盖其它 content 阶段的
> handler,后者似乎不起任何作用。
>
注册 cmcf->access_handler 是正确的做法。不起作用,应该是其他地方搞错了。调试的时候,直接盯紧
ngx_stream_init_connection 函数里对 cmcf->access_handler 的调用就好了。另外,应该开启
nginx 的调试日志(debugging log)。
Regards,
-agentzh