Welcome! Log In Create A New Profile

Advanced

Предложение: Ограничение скорости для IP/Host/Location

December 26, 2013 07:44AM
Всем привет,

Прошло столько лет, а воз и ныне там. Nginx до сих пор не умеет управлять скоростью отдачи ответа, кроме как limit_rate per connection, даже не per ip. Я предлагаю расширить управления скоростями. Это вопрос в частности к Максиму Дунину и всем кто имеет отношение к развитию Nginx.

На данный момент Nginx в плане балансировки и ограничения скоростей по сути ничего предложить не может, почти. Всё что предлагается сейчас это limit_rate per connection (не для ip), т.е. ограничение отдачи ответа для каждого соединения, что по сути малополезно и используется в основном с limit_conn.

Суть моего предложения

Для начала хочу сказать что я понятия не имею как устроено всё внутри, но предполагаю что так - при установке соединения nginx проверяет установлен ли limit_rate для текущего location и если да то отправляет ответ порциями по "n" килобайт в секунду для текущего подключения. Так вот я предлагаю ввести такие понятия (по ограничению скорости) как:

1) Ограничение скорости отдачи на коннект (per Conn) - limit_rate уже есть, отлично;

2) Ограничение скорости отдачи на IP (per IP). Поясняю, даже если юзер создал 10 коннектов, то всё равно он получит заданную скорость. Как это реализовать? Пускай Nginx отдает килобайты не по формуле "n" килобайт в секунду, как в случае limit_rate, а пускай он отдаёт заветные килобайты по формуле ("n" килобайт / count (IP connections)) в секунду, т.е. пускай сервер математически делит лимит еще и на количество текущих коннектов с этого IP. Это же так просто реализовать - подсчёт текущих коннектов с одного ip (уже сделано в модуле limit_conn с его zone $binary_remote_addr).

3) Ограничение скорости отдачи на хост (per Host). Поясняю, даже если 10 юзеров одновременно качают файлы, то всё равно он получат заданную скорость делённую на них всех. Как это реализовать? Пускай Nginx отдает килобайты не по формуле "n" килобайт в секунду, как в случае limit_rate, а пускай он отдаёт заветные килобайты по формуле ("n" килобайт / count (connections per host)) в секунду, т.е. пускай сервер математически делит лимит еще и на количество текущих коннектов к хосту. Это же так просто реализовать - подсчёт текущих коннектов к хосту (например через zone $host).

4) Ограничение скорости отдачи на локейшен (per URL). Поясняю, даже если 10 юзеров одновременно качают файлы из папки /limit_download/, то всё равно он получат заданную скорость для это локейшена, делённую на них всех. Как это реализовать? Пускай Nginx отдает килобайты не по формуле "n" килобайт в секунду, как в случае limit_rate, а пускай он отдаёт заветные килобайты по формуле ("n" килобайт / count (connections per md5($request_uri))) в секунду, т.е. пускай сервер математически делит лимит еще и на количество текущих коннектов к локейшену. Это же так просто реализовать - подсчёт текущих коннектов к хосту (например через zone $request_uri). А чтобы зона не была в сотни мегабайт лучше хранить md5($request_uri)... и вообще когда наконец сделаете в конфиге Nginx поддержку md5, уже надоело юзать perl module для этих целей!

На мой взгляд, дописать формулы расчета скорости в функции отправки ответа, да ввести парочку переменных в конфиг, а по сути сделать 3 маленьких модуля за много лет уже можно было а? Я жду этих скоростных лимитов в Nginx уже мноооого лет... Да и вообще как-то он слабо развивается, совсем не в ту сторону которая нужна большинству пользователей. На мой взгляд такие элементарные вещи нужно было реализовывать уже давно, а то сделали limit_conn, limit req и limit rate и на этом всё, типа можешь ограничивать скорости как душа пожелает. Душа как раз таки желает, только управления скоростью в Nginx по сути нет, ограничение на каждый коннект (а не на все коннекты ip адреса) - это для девочек в песочке поиграться.

Или то, что я описал, это верх сложности!? Прямо как сделать поддержку UTF-8 в PHP (так и не сделали кстати). Не поверю, потому что сделать нужные счетчики не сложнее чем уже сделано в limit_conn и limit rate.
Subject Author Posted

Предложение: Ограничение скорости для IP/Host/Location

sofiamay December 26, 2013 07:44AM

Re: Предложение: Ограничение скорости для IP/Host/Location

sofiamay December 26, 2013 07:57AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 62
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready