Re: Улучшение ngx_http_limit_req_module

Pavel V. pavel2000 на ngs.ru
Пн Фев 1 17:03:16 UTC 2016


Здравствуйте, Максим.

> Эта логика предполагает последовательное применение ограничений.
> Меж тем, логика работы nginx'а предполагает декларативную 
> конфигурацию, с отсутствием зависимости от порядка.  Не надо 
> тащить в nginx очередную императивную логику, хватит с нас 
> rewrite-модуля.

Понятно, переосмыслил концепцию с учетом этого замечания.
Тогда, конечно, предлагаемый мной параметр last и "условный off" в принципе
недопустимы. 

> Сделать явный отдельный параметр if - можно, но сколько-нибудь
> принципиальной разницы нет.  В то же время не факт, что мы хотим 
> тут усложнять синтаксис.

Если условия везде одинаковые, то они задаются map-ом, пусть и чуть более
громоздким конфигом, чем с параметром if. Принципиальная разница появляется
только в том, что в разные директивы limit_req в параметр if можно задать разные
условия.

В директиве access_log такой синтаксис есть и мне кажется, что это весьма
удобное решение. Хотелось бы понять, насколько оно востребованно применительно к
limit_req.

> Если хочется программировать - стоит подумать о том, чтобы 
> вытащить результаты ограничений в переменные, и дальше 
> программировать с помощью директив rewrite-модуля же.

Можно увидеть пример конфигурации, как она могла бы быть заданной
таким способом?
Например, для двух условий: $is_spider и $is_vip.
Если $is_vip - ограничений вообще нет, если $is_spider - одна зона
(ограничения), иначе вторая (другие ограничения)?

>>    Возможность безусловного отключения ограничений, наследованных  с
>> предыдущего уровня.

> Это уже записано в TODO, возможность отказаться от унаследованных 
> ограничений, безусловно, нужна.

>> Из планируемых вещей также есть мысли по поводу добавления параметра "dry-run".

> Да, сделать возможность проверки ограничений без их реального
> применения - тоже уже в TODO.

Судя по всему, это должен быть параметр директивы limit_req_zone. Как он зовется
в вашем TODO?

"Patches are welcome"? По этим двум пунктам они достаточно тривиальны.

-- 
С уважением,
 Pavel                          mailto:pavel2000 at ngs.ru



Подробная информация о списке рассылки nginx-ru