Кнопки



Яндекс цитирования


Главная » Документы » Ограничение трафика в Apache

Ограничение трафика в Apache


Привет ! Вчера придя на работу я глянул прокаченый за день трафик и ох....(охренел) просто. Блин, у меня с веб-сервера скачено было 1 гиг, и средняя скорость в течении нескольких часов держалась на уровне 1 мег в секунду !! Бедные провайдеры !! Я им не завидую !! Что можно сделать в этом случае ? Ну скажем закрыть страницу, переехать на другой сервер. Закрывать я скажем не буду, переезжать мне некуда, поэтому придется делать огранчиение на скачивание информации. У меня веб-сервер построен на Apache и зная, что к Апачу есть много всяких модулей, я решил ограничение сделать именно на нем.
Модулей огранцичивающих трафик существует огромное множество, но я выбрал 1 - MOD_BANDWIDTH. Мне он почему-то показался самым быстрым и легко настраиваемым.
Скачать исходники модуля можно со страницы автора : http://www.cohprog.com/v3/bandwidth/intro-en.html ну или как всегда у меня. При этом при скачивании у меня вы и натыкаетесь на работу модуля !! После скачивания можно его скомпилить в сам апач( я по-началу так и сделал), но можно и пойти другим путем :) К апачу есть такая приблуда, называется apxs, у меня она уже была поставлена, да и в общем в ред-хате она идет уже сколько версий.
Теперь нужно скачаный модуль откомпилить с помощью это приблуды:
apxs -c mod_bandwidth.c
При этом каталог с библиотеками к апачу должен существовать, у меня он в /usr/include/apache Полученный *.so надо выложить к другим модулям апача, в редхате это /usr/bin/apache
Далее нужно подключить модуль в конфиге /etc/httpd/conf/httpd.conf
Ищем секцию где начинают массовыые загрузки модулей, что то вроде:
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule ssl_module modules/libssl.so
LoadModule auth_ldap_module modules/mod_auth_ldap.so
В конце дописываем свою секцию:
LoadModule bandwidth_module modules/mod_bandwidth.so
Которая подгружает модуль.
Дальше по списку должна идти команда ClearModuleList. Сразу после нее надо добавить инициализацию модуля AddModule mod_bandwidth.c
Надо теперь создать рабочие директории плагина, типа так:
mkdir /tmp/apachebw
mkdir /tmp/apachebw/link
mkdir /tmp/apachebw/master
chmod 0777 /tmp/apachebw -R
После перезапуска апача все должно работать, причем без глюков !!!
Теперь уже давай резать трафик юзерям !!!
В конце конфига включаем модуль : BandWidthModule On
Дальше уже надо конфигурить ресурсы, их можно настраивать для директории или в файле .htaccess
Доступны команды:
BandWidth <domain|ip|all> <rate> - ограничение для домена,узера или всех по трафику килобайт в секунду
LargeFileLimit <filesize> <rate> - ограничение только для больших файлов
MinBandWidth <domain|ip|all> <rate> - минимальная скорость потока

Для примера, вот строка :
<Directory /home/www>
BandWidth ecp.fr 0
BandWidth 138.195 0
BandWidth all 1024
</Directory>

Т.е. нет ограничения для ecp.fr и хостов 138.195 и огранчиение на уровне 1024 байт в секунду для всех остальных.
И так далее, до бесконечности :)


Желаю удачи, пишите, если что :)