我们使用带有应用程序服务器的 nginx 作为后端。
我们需要限制每个 IP 到后端的同时连接数。limit_conn
为此,我们使用了 nginx 指令。但它并不适用于所有情况。如果用户从一个 IP 生成了很多连接并快速关闭它们,那么 nginx 会将此请求传递给后端,但由于客户端连接已经关闭,因此此连接不计入limit_conn
。
是否可以使用 nginx 限制每个 IP 到后端服务器的同时连接数?
我们使用带有应用程序服务器的 nginx 作为后端。
我们需要限制每个 IP 到后端的同时连接数。limit_conn
为此,我们使用了 nginx 指令。但它并不适用于所有情况。如果用户从一个 IP 生成了很多连接并快速关闭它们,那么 nginx 会将此请求传递给后端,但由于客户端连接已经关闭,因此此连接不计入limit_conn
。
是否可以使用 nginx 限制每个 IP 到后端服务器的同时连接数?
您可能想要设置
proxy_ignore_client_abort off;
如果客户端在不等待响应的情况下关闭连接,则确定是否应关闭与代理服务器的连接。
从文档
另一个建议是用来limit_req
限制请求率。
恐怕这个功能还不能用于开箱即用的 nginx。根据Nginx 常见问题解答
许多用户要求 Nginx 在负载均衡器中实现一项功能,以限制每个后端的请求数(通常为一个)。虽然计划对此提供支持,但值得一提的是,对此功能的需求源于被代理的应用程序的不当行为
我已经看到了nginx-limit-upstream 的一些 3rd 方模块,但我从未尝试过。