Назад | Перейти на главную страницу

Nginx - Могу ли я указать скорость в limit_req_zone в запросах в час?

Ограничивая количество запросов с IP-адреса, я использую

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

Я могу указать ставку в г / м (запросов в минуту) или р / с (запросов в секунду). Есть ли способ указать ставку в запросов / час ?

Например, я хочу, чтобы скорость составляла 75 запросов в час. Таким образом, это будет 1,25r / m, но r / m должно быть целым числом. Так что даже так это не работает.

Пожалуйста, помогите мне.

Согласно документации вы можете указать количество запросов в секунду или количество запросов в минуту, а не количество запросов в час, поэтому это невозможно.

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 запросов в минуту.

В какой-то момент мне понадобилась та же функция для определения ограничений скорости в час, день, неделю и т. Д.

Мне не терпелось создать клон ngx_http_limit_req_module сначала, но затем просто интегрировал необходимые изменения в nginx-мод.

Итак, это работает с 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