我寻求对 HTTP API 进行速率限制的解决方案,对于 Nginx,已经有一个模块HttpLimitReqModule支持此功能。但是参考文档,这个模块只支持每秒和每分钟。每小时/每天的任何解决方案?
问问题
2727 次
2 回答
0
我不知道 nginx 中有一个功能可以做到这一点。但是,您可以使用 auth_request 模块将所有传入流量交给上游 Web 服务,该服务检查流量并应用速率限制规则。
location / {
auth_request /ratelimiter;
..
Normal configuration settings
}
location /ratelimiter {
proxy_pass http://internalratelimitinghost;
# return a HTTP 200 to allow the request
# return anything else to deny it
}
nginx auth_request。默认情况下不包含该模块,因此您需要编译它。
于 2015-09-11T19:48:38.883 回答
-1
在某些时候,我需要相同的函数来定义每小时、每天、每周等的速率限制。
我很想先构建一个克隆ngx_http_limit_req_module
,然后将必要的更改集成到nginx-mod。
所以这适用于 nginx-mod:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/h; # 1 request per hour
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/d; # 1 request per day
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/w; # 1 request per week
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/M; # 1 request per month
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/Y; # 1 request per year
于 2019-07-07T11:56:54.557 回答