具体业务是这样, ngx1 ------------>>>>>> ngx2
ngx1是前端机器,有外网ip,负责代理分发
ngx2是实际业务服务, 上面严格按照location配置业务,用的 location =
如果发现,不匹配的location ,这 用这个 location / { return 444}
ngx1上接收互联网请求,如果 收到 的location ngx2不认识,就直接关闭连接了,这样ngx1 也会吧前端连接关闭, 但是这样 ngx1 到ngx2 的长连接就会 经常中断;
于是我跟业务开发商量,吧 locatioin / 里面配置 return 444 改成return 200 ,并加一个 特殊header, ngx 发现这个 特殊header 就直接在head_filter_by_lua 里面关闭前端连接。
不过由于不支持ngx.exit 所以不知道有没有其他办法
在 2013年12月16日星期一UTC+8上午10时43分49秒,agentzh写道:
Hello!
2013/12/15 lua初学者:
> header_filter_by_lua
> body_filter_by_lua
>
> 这两个指令里面都不能用 ngx.exit
> 我现在要在这个指令里面结束ngx 请求,有没有什么更好的办法?
>
我可以让 ngx.exit 工作在这两个上下文中,毕竟 nginx 核心中已经提供了 filter finalize 的机制。
不过,你能具体描述一下你的实际使用场景吗?
Best regards,
-agentzh