强制nginxclosures连接

我们有一个如下所示的设置:

客户端 – > AWS ELB(tcp负载均衡) – > NGINX(ssl终止) – >应用服务器。

我们希望将应用程序服务器从负载平衡器中正常地取出。 我们通过健康检查来做到这一点,当节点即将closures时,以503响应,同时允许任何挂起的请求完成。

但是,由于nginx被configuration为使用保持活动状态,即使已经从负载平衡器中取出节点,已经build立连接的客户端也可能会继续发送新的请求。

在应用程序服务器的所有响应中设置Connection: close header并没有什么帮助,因为nginx(根据RFC)正确地不传递给客户端。

有没有其他的方法,但完全禁用保持活力?

我们通过更新nginxconfiguration来禁用keep-alive(通过设置keepalive_requests和keepalive_timeout为0)来解决这个问题,然后在应用程序closures过程中重新加载nginx。

重新加载configuration可能就足够了,因为nginx在重新加载时启动了一个新的工作进程,并且只保留老工人,直到他们完成正在进行的请求。