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:

Kategorien:

Stichwörter:

apache · apache2 · mod_cband · traffic · traffik · traffic-begrenzung · trafficbegrenzung ·