Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: limit_req_zone на конкретный url
On Monday 30 December 2013 03:25:11 denis wrote:
> Приветствую.
>
> Есть необходимость ограничить обращения к конкретному урлу, причём не
> учитывая аргументов. То есть что-то вроде
> limit_req_zone $server_name$uri zone=one:10m 5r/m;
>
> location = /lalala {
> ...
> limit_req zone=one nodelay;
> }
>
> при этом все ссылки вида /lalala?aaa=bbb также должны обработаться.
> Корректна ли конструкция $server_name$uri ? И как описывать путь до "?"
>
Некорректна, поскольку директива limit_req_zone может принимать только одну
переменную. Читайте документацию: http://nginx.org/r/limit_req_zone/ru
Правильно будет разнести все хосты по отдельным блокам server и на каждый
выделить свою зону с $uri.
В крайнем случае можно воспользоваться директивой set:
set $limit $server_name$uri;
http://nginx.org/r/set/ru
> И попутно такой вопрос: точно ли r/m работает корректно?
Точно.
> Есть подозрение, что оно работает неправильно...
> прописана зона с описанием
> limit_req_zone $server_name zone=one:10m 5r/m;
> location тот же. Должны первые 5 запросов пропустить, остальные в
> течении минуты - срезать.
Не должны.
Встречный вопрос: если в городе ограничение скорости 60 км/ч, то должны
ли вы проехать минимум 60 километров прежде чем может быть зафиксировано
превышение скорости?
В вашей конфигурации, чтобы запрос был отклонен, достаточно послать его
с интервалом менее 12 секунд от предыдущего успешного.
--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|