Я ищу решение для ограничения скорости для HTTP API, для Nginx уже есть модуль поддержки HttpLimitReqModule эта особенность. Но обратитесь к документу, этот модуль поддерживает только в секунду и в минуту. Любое решение в час/день?
Поддерживает ли nginx HttpLimitReqModule в час/день/неделю?
comment
вы нашли решение этой проблемы?
- person Ali   schedule 01.01.2015
Ответы (2)
Я не знаю функции в nginx, которая могла бы это сделать. Однако вы можете использовать модуль auth_request для передачи всего входящего трафика вышестоящей веб-службе, которая проверяет трафик и применяет правила ограничения скорости.
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. Модуль не включен по умолчанию, поэтому вам нужно будет его скомпилировать.
person
Steve E.
schedule
11.09.2015
В какой-то момент мне понадобилась такая же функция для определения лимитов скорости в час, день, неделю и т.д.
Сначала мне не терпелось собрать клон 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
person
Danila Vershinin
schedule
07.07.2019