Problem:
wenn man viele Download-Dateien auf dem Server hat, oder Projekte, die manchmal über sich hinaus gehen, möchte man als Admin mal den Traffic begrenzen.
Dies kann unterschiedlich erreicht werden. Manchmal reicht es schon aus, wenn man gewissen Web-Spider/Crawler mithilfe der robots.txt aussperrt.
Lösung:
Wir installieren mod_cband:
Alle nötigen Pakete installieren:
# Debian: apt-get install apache2-prefork-dev # SuSE: yast -i apache2-devel # Fedora: yum install httpd-devel
Download und kompilieren:
cd /usr/local/src wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz tar xzvf mod-cband-0.9.7.5.tgz cd mod-cband-0.9.7.5 ./configure make make install
Nachbereitung:
Leider versucht make install das Modul direkt in die /etc/apache2/httpd.conf einzubinden. Dies ist evtl. (vor allem unter Debian) nicht erwünscht. Oder unter Fedora ist der Pfad z.B. fehlerhaft und muß /etc/httpd/conf/http.conf lauten.
Sicherheitshalber sollte man dies also überprüfen und ggf. die Zeile selber an der richtigen Stelle einfügen:
LoadModule cband_module /usr/lib/apache2/modules/mod_cband.so
(Achtung: auch hier kann der Pfad zu mod_cband.so evtl. anders sein.)
Das Modul braucht ein (für Apache) beschreibbares Verzeichnis:
(Achtung: Der Apache-User www-data heißt unter SuSE und Fedora anders)
mkdir /var/www/scoreboard chown www-data:www-data /var/www/scoreboard
Konfiguration:
Als erstes brauchen wir die globale Konfiguration für mod_cband in /etc/apache2/httpd.conf:
CBandScoreFlushPeriod 1 CBandRandomPulse On
Nun kann pro VirtualHost der Speed beliebig gesetzt werden.
Wichtig: die CBand-Direktiven müssen immer nach dem ServerName stehen. Diese Angabe ist für mod_cband essentiell.
Beispiel:
<VirtualHost 1.2.3.4> ServerName www.domain.tld CBandSpeed 1024 10 30 CBandRemoteSpeed 20kb/s 3 3 CBandLimit 100M CBandPeriod 4W CBandScoreboard /var/www/scoreboard </VirtualHost>
CBandSpeed setzt hier das Limit des Traffics auf 1024 Kbits pro Sekunde mit maximal 10 Request pro Sekunde und 30 offenen Connections.
CBandRemoteSpeed setzt ein Limit pro Request/Client. Die Parameter sind die selben wie bei CBandSpeed nur in anderer Schreibweise.
Mit CBandLimit, CBandPeriod und CBandScoreboard wird ein monatliches (4-Wochen-Intervall) Download-Volumen von 100 MByte fest gelegt.
Weitere Möglichkeiten von mod_cband finden sich in der Dokumentation.
Weiter Links:
- Official Website of mod_cband (old Website)
- Server Support Forum: mod_cband RPMS fuer Suse 9.3
