Поддерживает ли nginx HttpLimitReqModule в час/день/неделю?

Я ищу решение для ограничения скорости для HTTP API, для Nginx уже есть модуль поддержки HttpLimitReqModule эта особенность. Но обратитесь к документу, этот модуль поддерживает только в секунду и в минуту. Любое решение в час/день?


person linbo    schedule 21.03.2013    source источник
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