如何限制每个客户一次 1 个请求?

How to limit 1 request at a time per client?

ngx_http_limit_req_module 不同,我正在寻找一种方法来限制每个 IP 一次只能请求一个请求。换句话说,如果上游应用服务器还没有响应之前的请求,Nginx 应该 444 或 429 任何进一步的请求。

  1. 直觉告诉我们,与 ngx_http_limit_req_module 相比,这会节省内存,因为没有计数器可以递增。

  2. 在某些情况下(例如,机器人,暴力攻击等),上游应用服务器可能会选择故意保留请求,例如罚款。 10 秒或 10 分钟 - 但如果 Nginx 仍然允许用户并行发出请求,那么惩罚只是一堵攻击者可以绕过的墙。

你可以使用ngx_http_limit_conn

但是由于世界上几乎所有 ISP 都使用 NAT,您可能会遇到一些问题