mod_throttle

最終更新日時:2007-08-30 00:47:24
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秒でリフレッシュするという指定になります。

お問い合わせは 掲示板 にて。