Welcome! Log In Create A New Profile

Advanced

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

Maxim Dounin
February 01, 2016 08:26AM
Hello!

On Mon, Feb 01, 2016 at 03:48:04PM +0600, Pavel V. wrote:

> Здравствуйте.
>
> Насколько сообществу интересна реализация улучшения модуля ngx_http_limit_req_module, а в частности
> расширения синтаксиса директивы limit_req?
>
> Предлагаемый синтаксис:
>
> (1) limit_req zone=название [burst=число] [nodelay] [if=условие] [last];
> (2) limit_req off if=условие;
> (3) limit_req off;
> (4) limit_req last if=условие;
>
>
> Предлагаемая логика работы:
>
> Синтаксис (1):
>
> Базовый синтаксис дополняется возможностью указания условия if=условие и параметром last.
> Если заданное условие не выполняется, то ключ зоны не вычисляется, директива пропускается, учет
> запроса не происходит. Выполняются остальные директивы limit_req, при их наличии.
> Если заданное условие выполняется или условие не задано, применяются ограничения зоны обычным
> образом. При этом вычисляется ключ зоны, если значение ключа не пустое и указан параметр last -
> остальные директивы limit_req не выполняются.

Сейчас условное применение limit_req делается с помощью ключа -
если ключ пустой, то ограничение не применяется.

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

Кроме того, см. ниже про "если хочется программировать".

> Синтаксис (2):
>
> Возможность отключения ограничения по заданному в переменной условию.
> Директива такого синтаксиса может быть только первой в списке директив limit_req.

Это выглядит очень неинтуитивно, IMHO.

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

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

> Синтаксис (4)
>
> Возможность прекратить обработку директив limit_req по заданному в переменной условию, с
> применением ограничений уже обработанных директив.
>
> Отличие от синтаксиса (2): может быть в любом месте в списке директив limit_req, соответственно
> директивы выше по списку директив должны быть обработаны корректно, в остальном
> является практически точной копией синтаксиса (2) ("синтаксический сахар").
>
> Для данного улучшения уже почти готов патч (за вычетом синтаксиса 4). Также можно сделать
> аналогичную доработку модуля ngx_http_limit_conn_module.

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

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

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

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

[...]

--
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Улучшение ngx_http_limit_req_module

Pavel V. February 01, 2016 04:50AM

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

Maxim Dounin February 01, 2016 08:26AM

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

Pavel V. February 01, 2016 12:04PM

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

Maxim Dounin February 01, 2016 01:18PM

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

Pavel V. February 01, 2016 06:46PM

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

Валентин Бартенев February 02, 2016 06:26AM

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

Pavel V. February 02, 2016 08:24AM

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

Валентин Бартенев February 02, 2016 09:00AM

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

Pavel V. February 02, 2016 11:10AM

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

Валентин Бартенев February 02, 2016 11:50AM

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

Pavel V. February 02, 2016 01:32PM

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

Валентин Бартенев February 02, 2016 02:06PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 184
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready