我之所以要这样做,是因为用户使用 JavaScript 针对我们的 API 进行开发,而有些开发人员搞砸了,导致访问者使用 AJAX 请求冲击服务器。当这种情况发生时,我希望能够限制 API 请求,以便每分钟 50 个请求或类似这样的内容。
笔记:(特别是 DB 密集型资源,因此可能在路径级别,而不是服务器范围(例如,限制“/json_api/”,而不是“/static/”)。
答案1
这可以使用限制请求模块使用 Nginx。但是,如果这是反向代理,您可能想尝试新的HAProxy 支持的速率限制。
我发现 nginx 速率限制是一个有点令人困惑即可获得您想要的准确汇率。
但你基本上有类似的东西:
limit_req_zone $binary_remote_addr zone=default:10m rate=50r/m;
在部分中,然后在部分内的部分http
中输入类似以下内容:location
server
limit_req zone=default burst=10 nodelay;
为了不让它属于某个部分,就像/static
您只需要将其单独化location
并且不将其包含在limit_req
指令中(或相反)。