mod_throttle
Apache
mod_throttle とは
mod_throttle を使用すると、Apache の通信の帯域を制御することができます。
例えば、1 分あたり 1MB までしかデータを送信しないといったことが可能になります。
従量制のセンターに置いてあるサーバではこのような仕掛けがけっこう必要になりますし、予想以上のアクセスに対する防御としてもある程度有効です。
インストール
apache_1.3.26 + mod_throttle-3.1.2 、DSO 対応で Apache がインストールされている時の例です。
mod_throttle を mod_throttle 公式サイトから入手し、展開します。
% gzip -dc mod_throttle312.tgz |tar xvf - % cd mod_throttle-3.1.2
次に、mod_throttle.c の #define 部分をシステムに合わせて修正します。
※ Linux であれば編集無しで多分大丈夫。
後は、make install して終了ですが、make install すると自動的に httpd.conf が変更されるので注意が必要です。
また、apxs や apachectl (要するに Apache の bin ディレクトリ)にパスが通ってない場合には Makefile を編集する必要があります。
% su # make install
設定
httpd_conf を以下のように設定すると、http://servername/throttle-status で、帯域制限の設定状態および現在の通信ステータスが表示されるようになります。
<IfModule mod_throttle.c> ThrottlePolicy none <Location /throttle-status> SetHandler throttle-status Order deny,allow Deny from all Allow from localhost Allow from .xxx.xxx </Location> </IfModule>
deny, allow についてはもちろん設定しなくてもOKですが、外から見られたくない人は設定しておきましょう。
帯域制限の方ですが、mod_throttle ではいろいろなやり方で帯域制限が可能なので、1つだけ例を。
ThrottleRefresh 10 ThrottlePolicy volume 1000K 10
上記の設定を行うと、10 秒の間に 1000KB の送信があった時にそれ以降のリクエストは全て無効にします。
10 秒間経過するとまた復活します。
ThrottleRefresh 10の方は、ステータス表示を10秒でリフレッシュするという指定になります。