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