mod_cband - служит для ограничения пропускной способности виртуального хоста, ограничения количества запросов и открытых соединения. Также есть возможность устанавливать ограничения на обьем переданной информации. После достижения лимита обьема можно либо блокировать доступ, либо изменить скорость доступа.
Ознакомиться со всеми возможностями модуля можно на странице проэкта.
Модуль явно используется хостерами, но и в частном случае может пригодится.
Итак, перейдем от слов к делу. Выполним установку модуля из системы портов:
# cd /usr/ports/www/mod_cband && make install clean && rehash |
Установка прошла без проблем... Теперь пора разобраться как работает модуль.
Итак, единицы измерения, которые поддерживаются модулем.
Скорость передачи данных
По умолчанию - бит/с.
Квотирование
По умолчанию - K.
Временные периоды
По умолчанию - S.
mod_cband поддерживает следующие ключи.
Ключ: CBandDefaultExceededURL Описание: URL по умолчанию, куда mod_cband должен перенаправить все запросы к виртуальному хосту (или пользователю) после превышения квоты. ПРИМЕЧАНИЕ: Если не указать URL, при достижении лимита будет отправлен код ответа 503 (Service Unavailable). Синтаксис: CBandDefaultExceededURL URL Пример: CBandDefaultExceededURL http://muff.kiev.ua/forbidden.html |
Ключ: CBandDefaultExceededCode Описание: HTTP-код, отправленный пользователю, когда квота будет превышена. Синтаксис: CBandDefaultExceededCode HTTP_CODE Пример: CBandDefaultExceededCode 509 |
Ключ: CBandScoreFlushPeriod Описание: Период, по окончании которого счет для виртуалхоста или пользователя будет записан в файл. Синтаксис: CBandScoreFlushPeriod number_of_requests Пример: CBandScoreFlushPeriod 100 |
Ключ: CBandSpeed Описание: Указывает максимальную скорость для виртуалхоста. Синтаксис: CBandSpeed kbps rps max_conn kbps - максимальная скорость передачи rps - максимальное количество запросов в секунду max_conn - максимальное количество одновременных подключений Пример: CBandSpeed 1024 10 30 |
Ключ: CBandRemoteSpeed Описание: Указывает максимальную скорость для любого удаленного клиента. Синтаксис: CBandRemoteSpeed kbps rps max_conn kbps - максимальная скорость передачи rps - максимальное количество запросов в секунду max_conn - максимальное количество одновременных подключений Пример: CBandRemoteSpeed 20kb/s 3 3 |
Ключ: CBandClassRemoteSpeed Описание: Указывает максимальную скорость для любого удаленного клиента в зависимости от значений класса. Синтаксис: CBandClassRemoteSpeed class_name kbps rps max_conn class_name - название определенного класа kbps - максимальная скорость передачи rps - максимальное количество запросов в секунду max_conn - максимальное количество одновременных подключений Пример: CBandClassDst 66.249.64/24 CBandClassDst 66.249.65/24 CBandClassDst 66.249.79/24 CBandClassRemoteSpeed googlebot_class 20kb/s 2 3 |
Ключ: CBandRandomPulse Описание: Генератор случайных импульсов, является частью ограничителя скорости. Синтаксис: CBandRandomPulse On / Off Пример: CBandRemoteSpeed On |
Ключ: CBandLimit Описание: Задает квоту для виртуалхоста. Синтаксис: CBandLimit limit Лимит - доступные величины: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi) Пример: CBandLimit 10M Задает квоту 10*1000*1000 байт CBandLimit 10Mi Задает квоту 10*1024*1024 байт |
Ключ: CBandClassLimit Описание: Задает квоту для виртуалхоста. Синтаксис: CBandClassLimit class_name limit class_name - название определенного класа Лимит - доступные величины: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi) |
Ключ: CBandExceededURL Описание: Задает URL, на который будут перенаправлены запросы, когда ограничения будут превышены. ПРИМЕЧАНИЕ: Если не указать URL, при достижении лимита будет отправлен код ответа 503 (Service Unavailable). Синтаксис: CBandExceededURL URL Пример: CBandExceededURL http://muff.kiev.ua/forbidden.html |
Ключ: CBandExceededSpeed Описание: Задает максимальную скорость, до которой mod_cband понизит скорость в случае превышения квоты. Синтаксис: CBandExceededSpeed kbps rps max_conn kbps - максимальная скорость передачи rps - максимальное количество запросов в секунду max_conn - максимальное количество одновременных подключений |
Ключ: CBandScoreboard Описание: Задает scoreboard-файл для виртуалхоста. Синтаксис: CBandScoreboard path ПРИМЕЧАНИЕ: Файл должен быть доступен для записи пользователем, от имени которого работает процесс Apache. |
Ключ: CBandPeriod Описание: Задает период, после которого счетчики ограничений обнуляются. Синтаксис: CBandPeriod period Пример: CBandPeriod 1W CBandPeriod 60М |
Ключ: CBandPeriodSlice Описание: Задает длину части периода. Синтаксис: CBandPeriodSlice slice_length Пример: CBandLimit 100G CBandPeriod 4W CBandPeriodSlice 1W Период будет разделен на 4 части (4W/1W = 4). Для каждой части задано ограничение в 25G (100G/4=25G) |
Ключ: Описание: Задает имя cband-пользователя. Синтаксис: user_name > |
Ключ: CBandUserSpeed Описание: Задает максимальную скорость для cband-пользователя. Синтаксис: CBandUserSpeed kbps rps max_conn kbps - максимальная скорость передачи rps - максимальное количество запросов в секунду max_conn - максимальное количество одновременных подключений Пример: CBandUserSpeed 100kb/s 10 5 |
Ключ: CBandUserLimit Описание: Задает квоту cband-пользователя. Синтаксис: CBandUserLimit limit Лимит - доступные величины: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi) |
Ключ: CBandUserClassLimit Описание: Задает квоту cband-пользователя в зависимоти от класа назначения. Синтаксис: CBandUserClassLimit class_name limit class_name - название определенного класа Лимит - доступные величины: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi) |
Ключ: CBandUserExceededURL Описание: Задает URL, на который будут перенаправлены запросы, когда квота cband-пользователя будет превышена. Синтаксис: CBandUserExceededURL URL ПРИМЕЧАНИЕ: Если не указать URL, при достижении лимита будет отправлен код ответа 503 (Service Unavailable). Пример: CBandUserExceededURL http://muff.kiev.ua/forbidden.html |
Ключ: CBandUserExceededSpeed Описание: Задает максимальную скорость для cband-пользователя после превышения квоты. Синтаксис: CBandUserExceededSpeed kbps rps max_conn kbps - максимальная скорость передачи rps - максимальное количество запросов в секунду max_conn - максимальное количество одновременных подключений Пример: CBandUserExceededSpeed 10kb/s 5 3 |
Ключ: CBandUserScoreboard Описание: Задает scoreboard-файл для cband-пользователя. Синтаксис: CBandUserScoreboard path ПРИМЕЧАНИЕ: Файл должен быть доступен для записи пользователем, от имени которого работает процесс Apache. |
Ключ: CBandUserPeriod Описание: Задает период, после которого счетчики ограничений cband-пользователя обнуляются. Синтаксис: CBandUserPeriod period Пример: CBandUserPeriod 1W CBandUserPeriod 60М |
Ключ: CBandUserPeriodSlice Описание: Задает длину части периода для cband-пользователя. Синтаксис: CBandUserPeriodSlice slice_length Пример: CBandUserLimit 100G CBandUserPeriod 4W CBandUserPeriodSlice 1W Период будет разделен на 4 части (4W/1W = 4). Для каждой части задано ограничение в 25G (100G/4=25G) |
Итак, попробуем ограничить ресурсы для определенного виртуального хоста. Чтобы упростить задачу, пусть на этом виртуальном хосте будет установлен Speedtest.
В конфигурационный файл виртуалхоста добавлены следующие переменные:
CBandSpeed 1024 10 30 |
Создадим каталог, где будут храниться scoreboard-файлы и выставим необходимые права:
# mkdir /usr/local/etc/apache22/scoreboard # chown -R www:www /usr/local/etc/apache22/scoreboard |
Перезапускаем Apache, чтобы изменения вступили в силу:
# apachectl graceful |
Проверяем, сработали ли ограничения по скорости:
Как видим, ограничения сработали только на исход (относительно сервера), а на вход ограничения не работают. Но, на мое мнение, это не так и страшно.
Поганял еще Speedtest, чтобы достигнуть квоты в 15 мегабайт. По достижению квоты, сработал ключ CBandExceededURL, соответственно был перенаправлен на указанный URL.
Все доступные возможности проверять не стал, остановился только на указанных.
Кстати, mod_cband также поддерживает возможность отображения статистики. Для активации даной возможности необходимо добавить в конфигурационный файл виртуалхоста следующий блок:
<Location /cband-status> SetHandler cband-status </Location> <Location /cband-status-me> SetHandler cband-status-me </Location> |
После внесения изменений необходимо перезапустить веб-сервер:
# apachectl graceful |
Для просмотра статистики необходимо зайти по ссылке http://имя_виртуального_хоста/cband-status. Результат будет примерно следующий:
Основные вожможности модуля рассмотрели. Для более детального ознакомления советую ознакомиться с документацией, тем более что доступно множество примеров.
Последние комментарии
11 недель 3 дня назад
35 недель 4 дня назад
2 года 36 недель назад
3 года 6 недель назад
3 года 29 недель назад
3 года 44 недели назад
3 года 45 недель назад
3 года 48 недель назад
4 года 7 недель назад
4 года 11 недель назад