Я сейчас делаю ограничение числа запросов. Хотелось бы сделать удобный
синтаксис и функциональность. Планируется заменить директиву
limit_conn zone_name 5;
на примерно такое:
limit_requests zone=zone_name
speed=10k conn=5 rate=1/s
delay=1s rate=2/s
return=503 rate=5/s burst=10
;
Что означает следующее:
speed=10k conn=5 rate=1/s
ограничить скорость 10k/s, если соединений стало больше 5 и скорость
запросов больше 1 в секунду, при этом скорость ограничивается только
для 6-го и следующего соединения;
delay=1s rate=2/s
делать задержку в 1 секунду перед обоработкой запроса, если
соединений стало больше 5 [ неявный параметр из предыдущего
ограничения ] и скорость запросов больше 2 в секунду;
return=503 rate=5/s burst=10
возращать код 503, если соединений стало больше 5 [ неявный параметр
из предыдущего ограничения ] и скорость запросов больше 5 в секунду
и запросов в пике больше 10.
Если burst не указан, то он равен rate.
По мере описания условия [conn, rate и burst] должны увеличиваться
или оставаться такими же, но не должны уменьшаться.
Есть какие-нибудь комментарии/пожелания по названиям/функциональности ?
--
Игорь Сысоев
http://sysoev.ru