
Ограничить скорость загрузки в Nginx
Сегодня я искал способ ограничить скорость на выделенном сервере с высокой нагрузкой на Nginx, который обслуживает много видео файлов в секунду. Проблема была проста, каждый пользователи с большой пропускной способностью (bandwidth) потребляли много трафика ( больше чем обычный пользователь). И в своей статье «Ограничить скорость загрузки в Nginx» я расскажу как я ограничил такие соединения, я использовал директивы limit_rate и limit_rate_after.
В моем случае, мне нужно было ограничить соединения в моей папке с видео (videos), а выполняется это следующим образом. Открываем конфигурационный файл с nginx или ваш виртуальный хост с сайтом и добавляем:
location ^~ /videos/ { ... limit_rate_after 1m; limit_rate 150k; ... }
limit_rate_after ограничивает скорость соединения, в моем случае я хотел иметь ограничение в 1 Мб для начальной буферизации видео, а затем, после достижения 1 Мб, установить с директивой limit_rate скорость 150k в секунду (примерно 1.5Mбит).
Так что если один пользователь открывает несколько видео файлов, то он будет иметь возможность скачать файл со скоростью 150к с неограниченным количеством раз. Если вам нужно установить лимит на соединения, то вы можете сделать это с директивами limit_zone и limit_conn.
Пропишите:
http { limit_rate 256K; limit_zone one $binary_remote_addr 10m; server { location /videos/ { limit_conn one 10; #limit_speed one 100k; } } }
Это позволит ограничить 10 соединений в 1 IP и с 1 Мбит каждый.
Моя тема «Ограничить скорость загрузки в Nginx» завершена.