NGINX - 限制请求以防止滥用

oro*_*aki 30 nginx throttling rate-limiting

我之所以要这样做,是因为用户使用 JavaScript 针对我们的 API 进行开发,并且一些开发人员搞砸了并导致访问者使用 AJAX 请求猛烈抨击服务器。发生这种情况时,我希望能够将 API 请求限制为每分钟 50 个请求,或者类似的效果。

注意:(特别是数据库密集型资源,所以可能在路径级别,而不是服务器范围内(例如,节流“/json_api/”,但不是“/static/”)。

Kyl*_*ndt 39

这可以通过使用LimitReqModule和 Nginx来完成。但是,如果这是用于反向代理,您可能想尝试HAProxy 支持的新速率限制

我发现 nginx 速率限制对于获得您想要的确切速率有点令人困惑

但你基本上有这样的事情:

limit_req_zone  $binary_remote_addr  zone=default:10m   rate=50r/m;
Run Code Online (Sandbox Code Playgroud)

http部分,然后像在下面location的章节中的server部分:

limit_req zone=default burst=10 nodelay;
Run Code Online (Sandbox Code Playgroud)

为了不像/static您那样将它用于某个部分,只需将其作为一个单独的部分location,而不将其包含为limit_req指令(或相反)。

  • zone、burst 和 nodelay 记录在 [关于速率限制模块的 Nginx wiki 页面](http://wiki.nginx.org/NginxHttpLimitReqModule) 中,链接到上面的答案。 (2认同)

归档时间:

查看次数:

29148 次

最近记录:

8 年,5 月 前