Apache2 で IP やユーザごとに同時接続数や帯域を制限するために、 mod_cband っていうモジュールを使ってみた。
かなり細かい設定もできるし、ステータス画面は非常にシンプルだけど分かりやすいのでおすすめです。
環境は CentOS-4.4 でパッケージは無さそう。後で、ライセンスだけ確認して RPM 作るかも。
ダウンロードは以下からできる。
http://cband.linux.pl/
$ tar zxvf mod-cband-0.9.7.5.tgz $ cd mod-cband-0.9.7.5 $ ./configure $ make # make install
これで /usr/lib/httpd/modules/ に mod_cband.so がインストールされる。
次に apache に cband がロードされるように設定を行う。 apache の設定ディレクトリに mod_cband.conf みたいなファイルを作成する。
# vi /etc/httpd/conf.d/mod_cband.conf
LoadModule cband_module /usr/lib/httpd/modules/mod_cband.so <Location /cband-status> SetHandler cband-status AuthName "cband status" AuthType Basic AuthUserFile /var/www/.htpasswd Require user valid-user </Location>
ついでにアクセス制限の設定もしてあるけど、必要なければ削除で。
ここまでして、 apache を reload すると /cband-status にアクセスすることで帯域の状態を確認できる画面が表示される。
CBandSpeed 1024 10 5上記設定は、Web サーバへの接続に対して最大の転送速度が 1024kb/s で一秒間に 10 リクエスト、同時接続数を 5 に制限している。この設定は <Virtualhost> コンテキストに設定できる。
CBandRemoteSpeed 1024kb/s 10 5上記設定は、 1 つの IP からの接続に対して最大の転送速度が 1024kb/s で一秒間に 10 リクエスト、同時接続数を 5 に制限している。この設定は <Virtualhost> コンテキストに設定できる。 それ以外は設定した際に追記する。