nginx 后面有 4 个 Web 服务器,每秒发生 262 次事件。我想告诉 nginx 停止向该服务器发送请求。如果我从文件中删除该服务器并重新加载该文件,那么所有正在处理的请求是否都会被丢弃,因为 nginx 不再知道该服务器。我可以向配置中添加什么,以便它慢慢将该服务器从池中删除,然后我可以等待当前请求完成。
答案1
根据 nginx 文档,更新配置然后使用service nginx reload
或/etc/init.d/nginx reload
命令应使用新配置启动新的工作进程,并关闭旧工作进程上的任何侦听套接字,从而阻止与它们建立新连接。这些旧工作进程将继续运行,直到它们完成对客户端的服务,然后关闭。
答案2
在 nginx 配置中将服务器标记为已关闭。您还可以检查 max_fails 和 fail_timeout 参数。通过向主节点发送 HUP 信号重新加载配置。
请注意,您应该使用 QUIT 信号来正常关闭服务器节点。