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

nginx HttpLimitReqModule是否支持每小时/天/周?,http,nginx,server,rate-limiting,Http,Nginx,Server,Rate Limiting,我正在寻找一个解决方案来限制HTTP API的速率,对于Nginx,已经有一个模块支持此功能。但请参阅文档,此模块仅支持每秒和每分钟。每小时/天有什么解决方案吗?我不知道nginx中有什么功能可以做到这一点。但是,您可以使用auth_请求模块将所有传入流量传递给上游web服务,上游web服务检查流量并应用速率限制规则 location / { auth_request /ratelimiter; .. Normal configuration settings } l

我正在寻找一个解决方案来限制HTTP API的速率,对于Nginx,已经有一个模块支持此功能。但请参阅文档,此模块仅支持每秒和每分钟。每小时/天有什么解决方案吗?

我不知道nginx中有什么功能可以做到这一点。但是,您可以使用auth_请求模块将所有传入流量传递给上游web服务,上游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
}

。默认情况下不包括该模块,因此您需要在中编译它。

在某些时候,我需要相同的函数来定义每小时、每天、每周等的费率限制

我很想先构建一个ngx_http_limit_req_module的克隆,但随后只是将必要的更改集成到

因此,这适用于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

你找到解决这个问题的办法了吗?