nginx的HttpLimitReqModule支持每小时/每天/每周限制吗?

14

我正在寻找一种针对HTTP API进行速率限制的解决方案,对于Nginx而言,已经有一个名为HttpLimitReqModule的模块支持此功能。但是根据文档,该模块只支持每秒和每分钟。是否有每小时/每天的解决方案?


你找到这个问题的解决方案了吗? - Ali
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。该模块默认未包含,因此您需要进行编译。


-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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接