Назад | Перейти на главную страницу

Как ограничить максимальную скорость сети на всем виртуальном хосте?

Задний план

У меня есть Apache (с обратным прокси-сервером NginX) в качестве веб-сервера. У меня есть форум и запущена служба размещения изображений.

Но, как вы знаете, служба хоста изображений вызывает большую пропускную способность сети (Мбит / с). Я хочу зарезервировать часть пропускной способности для своего форума, ограничив максимальный трафик на виртуальном хосте службы хоста изображений.

Что я наделал:

Apache

Я установил mod_bw модуль, чтобы ограничить максимальную пропускную способность. Кажется, работает очень хорошо, потому что замедляет загрузку страницы. Но этого недостаточно. Мне также нужно ограничить скорость загрузки, и теперь изображение будет загружаться на полной скорости. Так что этот не работает (или работает частично), но я сохраню его в httpd.conf.

Nginx

Встроенный модуль limit_rate работает для загрузки изображения. Таким образом, похоже, что при объединении двух модулей служба хоста изображений может работать в ограниченной среде. Но подождите ... Когда я загружаю несколько изображений одновременно, все изображения загружаются с одинаковой ограниченной скоростью. Например, я установил 50 КБ / с, если я загружаю изображение, максимальная скорость составляет 50 КБ / с. И затем я загружаю еще один файл изображения до того, как последний будет завершен, скорость загрузки обоих изображений составляет 50 КБ / с, всего 100 КБ / с.

Это не то, что мне нужно.

На самом деле мне нужно:

Независимо от того, сколько одновременных пользователей просматривают веб-страницу хоста изображений одновременно, они могут использовать только общую пропускную способность, установленную на 50 КБ / с. (Просто пример, я увеличу это)

Поскольку у меня есть и Apache, и NginX, мне плевать на объединение нескольких модулей, чтобы помочь мне достичь цели. Пожалуйста, помогите мне решить проблему, большое спасибо!

Если вам нужно установить ограничение на количество подключений, вы сможете сделать это с помощью limit_zone и limit_conn директивы. Пример:

Внутри конфигурации вашего серверного блока:

limit_rate 128K; limit_zone one $binary_remote_addr 10m;

Внутри конфигурации вашего блока местоположения:

limit_conn one 10;

В этом примере это позволит 10 подключений на IP по 1 Мбит каждый.