レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

C5 C6 S6

apache で帯域制限をかける(mod_bw モジュールを使ってみた)

2013年3月5日 2015年5月15日
apache band width

apache で帯域制限をかけるモジュールは、いろいろありますが、使い勝手の良いものとして mod_bw があります。
この mod_bw モジュールは、
apache でPseudo streaming(疑似ストリーミング)で動画配信を行ってみる( mod_flvx,mod_h264_streaming モジュールを使ってみた) でも最後の方で、少しだけ紹介していますが、
大きなファイルをやたらとダウンロードされたり、DoS攻撃など大量のトラフィックに制限かけるための一つの手段として用いられています。

今回は、そのmod_bw モジュールを使ってみたいと思います。

帯域制限(Bandwidth)とは、
ネットワークの世界では、送受信データ量を制限するという意味でよく使われています。

そもそも 帯域幅(Bandwidth) というのは、文字通り周波数の範囲を指し、ネットワークの世界観のデータ通信幅的な意味とは、ちょっと異なります。 ただ、その語源は、この周波数が情報伝達能力に非常に関与しているために通信伝達能力を帯域幅などと代名詞のように使われているのが現状です。

mod_bw モジュールを使ってみた

mod_bw モジュールをインストールする

mod_bwモジュール は、デフォルトではインストールされていないので、手動(make作業)でインストールする必要があります。
Debian/Ubuntuでは、libapache2-mod-bw としてパッケージが存在しますので、aptで簡単にインストールできます。
しかし、CentOS/ScientificLinux では、(探せばrpmパッケージはありますが)公式なバイナリパッケージは存在しないので、手動(make作業)でインストールすることになります。
(他のサイトなどでは、CentOS/ScientificLinux では、rpmを探してインストールするようなことが書かれてありますが、それほど難しくないので、簡単に解説してみます。)

  1. make 環境をインストールします。

    まずは、少なくともmake,gccは必要な環境になりますので、make,gccをインストールします。
    (既にインストール済の場合、スキップしてください。)

    $ yum -y install make gcc

  2. httpd, httpd-devel をインストールします。

    apacheをインストールします。
    apacheの開発環境(httpd-devel) をインストールします。
    (既にインストール済の場合、スキップしてください。)

    $ yum -y install httpd httpd-devel

  3. mod_flvx をインストールします。
    # 適当なディレクトリに mod_bw モジュールのソースコード一式をダウンロードします。
    #   -- 現在(2013.3)、最新バージョンが 0.92 でした。
    $ wget "http://sourceforge.net/projects/bwmod/files/bwmod/mod_bw%200.92/mod_bw-0.92.tgz/download"
    ...
    $ ls
    mod_bw-0.92.tgz
    
    # tar ファイルを解凍します。
    $ tar xfz mod_bw-0.92.tgz
    
    # 以下のようなファイルが解凍されます。
    $ ls
    ChangeLog  LICENSE  mod_bw-0.92.tgz  mod_bw.c  mod_bw.txt  TODO
    
    # mod_bwモジュールを apxs でインストールします。
    $ apxs -i -a -c mod_bw.c
    ...
    
    # 64bit OSなら以下のディレクトリに作成されているはずです。
    $ ls /usr/lib64/httpd/modules/mod_bw.so
    /usr/lib64/httpd/modules/mod_bw.so
    
    # 32bit OSなら以下のディレクトリに作成されているはずです。
    $ ls /usr/lib/httpd/modules/mod_bw.so
    /usr/lib/httpd/modules/mod_bw.so

apache の設定ファイル を編集する

apxs コマンドでインストールした時点で、/etc/httpd/conf/httpd.conf には、以下の1行が追加されているはずです。
(もし、見当たらないようなら追加しておきます。パスは、OSによって異なりますので注意してください。)

LoadModule bw_module          /usr/lib64/httpd/modules/mod_bw.so

ここまでできたら、あとは、各制限の設定を行うだけになります。
以降に簡単な制限のかけ方をいくつか例をあげて解説しておきます。

帯域制限(転送速度制限)を行う

以下の例では、/var/www/html/video ディレクトリへのアクセスは、すべて 100kByte/Sec に制限されます。

...
<Directory "/var/www/html/video">
  <IfModule mod_bw.c>
    BandWidthModule On
    ForceBandWidthModule On
    BandWidth all 100000
  </IfModule>
</Directory>
...

BandWidthModule [On|Off]
mod_bw モジュールを有効にします。
On : 有効
Off : 無効
ForceBandWidthModule [On|Off]
全てのリクエスト処理に対して mod_bw モジュールを有効にします。
On : 有効
Off : 無効
BandWidth [From] [bytes/s]
帯域を指定します。
From : 対象とする接続元を指定します。(省略可:省略時はすべての接続が対象)
ホスト名、IPアドレス、ドメイン名(あるいはドメイン名の一部)、ネットワーク(マスク)を指定することができます。
# ホスト名の例
host.exmaple.com
# IPアドレスの例
192.168.1.32
# ドメイン名の例
exmaple.com
# ネットワーク(マスク)の例
192.168.0.0/24

bytes/s : 使用可能な合計速度を Byte/Sec で指定します。0は無制限です。

また、BandWidthは、以下のようなフォーマットで指定することも可能です。

BandWidth u:[User-Agent] [bytes/s]

接続元をユーザエージェントで指定することができます。
# ユーザエージェント名の先頭に "Mozilla/5" を含むクライアントからのアクセスは、10kByte/Sec に制限されます。
BandWidth "u:^Mozilla/5(.*)" 10240
# ユーザエージェント名が "wget" からのアクセスは、10kByte/Sec に制限されます。
BandWidth "u:wget" 102400

大きなファイルだけ帯域制限(転送速度制限)を行う

以下の例では、/var/www/html/video ディレクトリへのアクセスは、大きなファイルだけ 100kByte/Sec に制限されます。

...
<Directory "/var/www/html/video">
  <IfModule mod_bw.c>
    BandWidthModule On
    ForceBandWidthModule On
    LargeFileLimit .mp4 500 10240
  </IfModule>
</Directory>
...

LargeFileLimit [Type] [Minimum Size] [bytes/s]
ファイルによって帯域を指定します。
Type : ファイル種別(拡張子)を指定します。

Minimum Size : 制限をかけるファイルサイズ(kbyte) を指定します。

bytes/s : 使用可能な合計速度を Byte/Sec で指定します。

接続数を制限する

以下の例では、/var/www/html/video ディレクトリへの接続数を 20 に制限しています。
また、このときの帯域制限は、100kByte/Sec に制限されます。

...
<Directory "/var/www/html/video">
  <IfModule mod_bw.c>
    BandWidthModule On
    ForceBandWidthModule On
    BandWidth all 10240
    MaxConnection all 20
  </IfModule>
</Directory>
...

MaxConnection [From] [Max]
最大接続数を指定します。
From : 対象とする接続元を指定します。(省略可:省略時はすべての接続が対象)
ホスト名、IPアドレス、ドメイン名(あるいはドメイン名の一部)、ネットワーク(マスク)を指定することができます。
# ホスト名の例
host.exmaple.com
# IPアドレスの例
192.168.1.32
# ドメイン名の例
exmaple.com
# ネットワーク(マスク)の例
192.168.0.0/24

Max : 最大接続数を指定します。

MaxConnectionは、BandWidthとともに使用します。
また、MaxConnectionFromBandWidthFrom パラメータは同じ値でなければなりません。
上記の例では、いずれもall を指定していると思います。

この接続数を超えると 503 のHTTPステータスコードが出力されます。Apacheのデフォルト画面は、以下のような感じです。
Apache 503 エラー

いかがだったでしょうか?
ここでは、例として Directory ディレクティブの中で使用しましたが、 mod_bw モジュールは、
VirtualHost ディレクティブでも使用できます。
VirtualHost ディレクティブで使用すれば、その仮想ホスト全体に制限をかけることができます。
...
<Virtualhost *>
    Servername www.example.com
    ...
    BandwidthModule On
    ForceBandWidthModule On
    Bandwidth all 10240
    MinBandwidth all -1
    ...
</Virtualhost>
 ...
などとするこも可能です。
上記の例は、すべてに対して 10kByte/Sec の帯域制限を設けた例です。

この制限を設けることで、サーバーの負荷もある程度セーブできることもあります。 また、使い方を間違えてしまうと、重たいサーバーになってしまうこともありますから、便利な反面、注意して使う必要があろうかと思います。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

apache でPseudo streaming(疑似ストリーミング)で動画配信を行ってみる( mod_flvx,mod_h264_streaming モジュールを使ってみた)

apache では、動画(flv,mp4)を制御するための モジュールとして mod_flvx,mod_h264_streaming があります ...

apache で WebDAVを使ってファイル共有してみる

今回は、apache で WebDAVを使ってファイル共有してみます。 WebDAV(Web-based Distri ...

apache の FastCGI(mod_fcgid) で phpを動かしてみる

前回の「apache で phpのモジュール版とcgi版の切り替えを行ってみる」でCGIの環境設定を行いました。 ここでは、更に一歩進んで、F ...

Apacheの同時アクセスを制限(mod_limitipconn)する

Apacheのアクセスログを見ているといろんなことが分かります。 この中で、急に負荷が高くなることがあります。それは、ほとんどの場合、どこかの ...

nginx で帯域制限をかける(limit_rate を使ってみる)

apache で帯域制限をかける(mod_bw モジュールを使ってみた) でapacheで帯域制限をかけたのと同じようにnginxでも帯域制限を ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2276 [s]