nginx HttpLimitReqModule是否支持每小时/每天/每周?

时间:2013-03-21 03:04:21

标签: nginx rate-limiting

我寻求一个解决方案来对http api进行速率限制,对于nginx,已经有一个模块HttpLimitReqModule支持此功能。但是参考文档,该模块仅支持每秒和每分钟。每小时/每天的任何解决方案?

2 个答案:

答案 0 :(得分: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。默认情况下不包含该模块,因此您需要将其编译为。

答案 1 :(得分:0)

在某个时候,我需要相同的功能来定义每小时,每天,每周等的速率限制。

我很想先构建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