Hello!
2015-11-13 17:04 GMT+08:00 牧童:
> 我在init_work_by_lua_file阶段使用ngx.timer接口做一些定时任务,我的问题是
> 1,在这个timer的回调函数中,如何使用配置文件中set的变量,貌似set是在rewrite阶段应该还没有吧?
nginx 的变量都是和特定的请求绑定的。在 timer 回调中,并不存在与之绑定的任何请求,因此 nginx
变量也是没有任何意义的。建议使用 Lua 模块函数的参数来传递配置,例如
init_worker_by_lua_block {
require("mymod").init{ dogs = 32, cats = 56 }
}
假设你原先想通过变量 $dogs 和 $cats 来传递配置参数。
> 2,在这个timer的回调函数中,如何获取服务的server列表,貌似和上面一个问题。。。
>
我不明白你这里说的 server 列表究竟是 http {} 上下文中的 server {} 块的列表,还是 upstream {}
上下文中的 server 指令的列表。
> 看过lua-resty-upstream-healthcheck,示例写死在opt参数中,避开了这个问题。。。
>
这恰恰正是上面所推荐的方式。在这种上下文中使用 nginx 变量本来就没有任何意义。
Regards,
-agentzh