Nginx - 我可以在 limit_req_zone 中指定每小时请求的速率吗?

Nginx - 我可以在 limit_req_zone 中指定每小时请求的速率吗?

在限制来自 IP 的请求数量时,我正在使用

limit_req_zone  $binary_remote_addr zone=one:10m rate=1r/m;

我可以指定利率R M(每分钟请求数)或速度/秒(每秒请求数)。有没有办法指定速率请求数/小时

例如,我希望速率为 75 个请求/小时。因此它将是 1.25r/m,但 r/m 必须是整数。因此,即使这样也行不通。

请帮帮我。

答案1

根据文档您可以按每秒请求数或每分钟请求数来指定,而不是按每小时请求数来指定,所以这是不可能的。

The rate is specified in requests per second (r/s). If a rate of
less than one request per second is desired, it is specified in
request per minute (r/m). For example, half-request per second
is 30r/m.

我建议您根据您的使用情况向上或向下舍入。1r/s 是每分钟 60 个请求,2r/s 是每分钟 120 个请求。

答案2

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

我很想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

相关内容