Apache 2.xでコンテンツの転送速度制限をかける方法のメモです。共用レンタルサーバや従量課金の AWS などを使っていてサイトの転送量を抑えたい場合など使えると思います。
mod_bw モジュール導入
リポジトリを指定し yum でインストールします。
yum --enablerepo=epel install mod_bw
設定ファイルのバックアップを取り、設定ファイルの設定を行います。
mv /etc/httpd/conf.d/mod_bw.conf /etc/httpd/conf.d/mod_bw.conf.orig vi /etc/httpd/conf.d/mod_bw.conf
同じクライアントからのアクセスを2Mbps(256kbytes/s)に制限する場合の mod_bw.conf の内容です。BandWidth は転送可能な秒間バイト数です。
LoadModule bw_module extramodules/mod_bw.so BandWidthModule On ForceBandWidthModule On BandWidth all 256000
128bytes 以上の .flv と .avi ファイルに対して2Mbps(256kbytes/s)に制限する場合の例です。LoadModule は省略。
BandWidthModule On ForceBandWidthModule On BandWidth all 256000 LargeFileLimit .flv 128 256000 LargeFileLimit .avi 128 256000
設定が終了したらサーバを再起動します。
/etc/init.d/httpd restart
帯域制限がかかっていることを確認
ab コマンドなどでコンテンツの転送速度が制限なされていること、Apache のエラーログにエラーが出ないことを確認します。
ab -n 1 -c 1 http://example.com/hoge.flv