我想这样做的原因是因为用户使用JavaScript来开发我们的API,一些开发者搞砸了,导致访问者通过AJAX请求来closures服务器。 发生这种情况时,我希望能够将API请求限制为每分钟50个请求 ,或者是这种情况。
注意:(尤其是DB密集型资源,或许在path级别,而不是服务器范围内(例如:“/ json_api /”,而不是“/ static /”)。
这可以使用Nginx的LimitReqModule来完成。 但是,如果这是一个反向代理,你可能想试试HAProxy支持的新速率限制 。
我发现nginx的速率限制是有点混乱得到你想要的确切速度。
但你基本上有这样的东西:
limit_req_zone $binary_remote_addr zone=default:10m rate=50r/m;
在http
部分中,然后在server
部分的location
部分中显示以下内容:
limit_req zone=default burst=10 nodelay;
为了不像/static
的某个部分,你可以把它作为一个单独的location
,不包括limit_req
指令(或limit_req
)。