limit_con, limit_req и прочая (feature request)

Виктор Вислобоков corochoone на gmail.com
Чт Дек 8 07:33:54 UTC 2011


Привет всем.

Тема, конечно, заезженная до безумия, но тем не менее...

Да, вчера я заметил, что nginx-0.6.39 который у меня стоял неправильно
работает с limit_con и плевать хотел на выставленные ограничения, да
поменял я его на nginx 1.0.6 и эта проблема исчезла, зато я вдруг
обратил внимание на другую. На одном из клиентских сайтов яндекс
получает 503-ю, хотя стоит ограничение с одного IP в 4-штуки, а четыре
яндекса на этот сайт не лезут мегастопудово. Да, наконец-то я допёр
(простите за тупость), что хэш-таблица для limit_zone ОБЩАЯ НА ВСЕ
ВИРТУАЛХОСТЫ, а не как я почему-то был уверен, что в каждом случае она
своя - ещё раз простите за тупость, но тут как раз и грабельки
нарисовались!

Мне надо ограничить соединения с одного IP так, чтобы было не более
4-х на каждый ВИРТУАЛХОСТ.
Зарывшись носом в документацию, я понял, что обломинго и limit_zone и
limit_req не даёт такой возможности, потому что как уже писалось выше.

Я не буду заумно и долго рассуждать правильно это или нет, я просто
прошу у Игоря сделать ВСТРОЕННУЮ ПЕРЕМЕННУЮ, которая бы содержала
ВМЕСТЕ: $binary_remote_address и $server_name
Такая переменная даст возможность эффективно использовать limit_zone
или limit_req_zone для ограничения числа IP соединений не только с
одного IP но и ОДНОВРЕМЕННО к одному виртуалхосту.

Спасибо за внимание, успехов!


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