とりあえずの備忘録

主にパソコンやインターネットに関するメモ

Apache mod_limitipconnで同時接続数を制限する

Apacheに同じIPアドレスによる同時接続数を制限する「mod_limitipconn」モジュールを組み込む。

インストール環境

Fedora Core 4と同時にインストールしたApache2.0に、動的モジュール「Dinamic Shared Object(DSO)」として組み込む

mod_limitipconnモジュールのインストール

mod_limitipconnモジュールをダウンロードする

配布場所「mod_limitipconn.c」から「Fedora Core 3 binary rpm」のRPMパッケージをダウンロード。

RPMパッケージをインストールする

# rpm -ivh mod_limitipconn-0.22-1.i386.rpm

インストールできたか確認する

パッケージが一覧にあるか確認

# rpm -qa | grep limit

かつ、「/etc/httpd/modules/mod_limitipconn.so」というファイルが存在するか確認。

参考エントリーはこちら。

mod_limitipconnモジュールの設定

httpd.confを編集する

#mod_limitipcon.soの読み込み
LoadModule limitipconn_module modules/mod_limitipconn.so

#mod_statusを有効
ExtendedStatus On

#mod_limitipconnの設定
#全ての場所とファイルの同時接続数を1に制限
<IfModule mod_limitipconn.c>
  <Location />
    MaxConnPerIP 1
  </Location>
</IfModule>

Apacheを再起動する

# service httpd restart

負荷テストをして動作を確認する

下記エントリーにおいて、同時接続数を変えてテストする。制限を越えたリクエストには「503」のステータスコードがApacheのエラーログに記録される。

mod_limitipconnの設定例

制限無し。

<IfModule mod_limitipconn.c>
  <Location />
    MaxConnPerIP 0
  </Location>
</IfModule>

「/public」への同時接続数を3。

<IfModule mod_limitipconn.c>
  <Location /public>
    MaxConnPerIP 3
  </Location>
</IfModule>

「/music」内のMIMEタイプ「audio/*」のファイルに限り同時接続数を3。

<IfModule mod_limitipconn.c>
  <Location /music>
    MaxConnPerIP 3
    OnlyIPLimit audio/*
  </Location>
</IfModule>

「/archives」内のMIMEタイプ「text/*」のファイル以外の同時接続数を1。

<IfModule mod_limitipconn.c>
  <Location /archives>
    MaxConnPerIP 1
    NoIPLimit text/*
  </Location>
</IfModule>