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

Pavel V. pavel2000 на ngs.ru
Пн Фев 1 23:45:18 UTC 2016


Здравствуйте, Maxim.

Вы писали 2 февраля 2016 г., 0:16:37:

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

> Скорее, отдельная директива, аналогично limit_req_status / 
> limit_req_log_level.

Приведу свою аргументацию, почему это должен быть именно параметр
директивы limit_req_zone.

Функция "dry-run" необходима для того, чтобы дать возможность протестировать
влияние ограничений на реальные запросы. В реальности в одном контексте будет
несколько директив limit_req, и отключать применение ограничений необходимо
будет только на части из них. 

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

Гибкости, которую может предоставить отдельная директива уровня контеста, для
этих целей явно недостаточно. Чтобы решить данную ситуацию, можно, например,
добавить параметр в директиву limit_req.

Однако, если возникает необходимость тестировать "как оно будет", то это значит,
что неправильна настройка rate всей зоны и мы будем стремиться максимально
исключать негативные последствия - т.е. будем выключать применение ограничения
везде, где используется указанная зона, либо загрублять настройку rate.

В общем случае, наиболее вероятным сценарием использования функции я вижу именно
создание дополнительной зоны  для тестирования, подключение её в нужные
контексты (возможно, параллельно ранее сконфигурированным зонам/ограничениям) и
собственно тестирование. Возможность задавать dry-run параметром limit_req для
этих целей явно избыточна, поэтому я предлагаю вариант добавления параметра в
директиву limit_req_zone. 


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



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