Ограничить скорость загрузки в Nginx

Ограничить скорость загрузки в 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» завершена.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.