我们最近在用ngx-lua-module时有个需求,就是判断upstream传过来的header中是否有某个头,如果有的话,我们还需要向后端请求数据并返回。由于原先是用proxy模块实现content的请求的,所以想问下春哥,是否有可能在header-filter阶段使用cosocket来向后端发起请求拿数据(目前好像不可能),不知是否可以实现这一需求呢?谢谢。 --
Hello! 2014-10-14 4:34 GMT-07:00 yang.yang: > > 我们最近在用ngx-lua-module时有个需求,就是判断upstream传过来的header中是否有某个头,如果有的话,我们还需要向后端请求数据并返回。由于原先是用proxy模块实现content的请求的,所以想问下春哥,是否有可能在header-filter阶段使用cosocket来向后端发起请求拿数据(目前好像不可能),不知是否可以实现这一需求呢?谢谢。 > nginx 核心的输出过滤器并不支持 yielding 和 resuming,所以 ngx_lua 模块无法在 header_filter_by_lua 这样的上下文中支持 cosocket 通信。 如果你的当前响应并不需要 cosocket 的结果的话,可以使用 ngx.timer.at [1] 创建一个 0 延时的定时器发起异步的 cosocket 请求。 Regards, -agentzh [1] https://github.com/openresty/lua-nginx-module#ngxtimerat