Apacheで同時接続を制限するためのモジュール mod_limitipconn

2008 / 06 / 21 ( Sat )
この記事をはてなブックマークに登録する この記事をYahoo!ブックマークに登録する この記事をlivedoorクリップに登録する
Apacheで同時接続を制限するためのモジュールとしてmod_limitipconnがあります。

LoadModule limitipconn_module libexec/mod_limitipconn.so
ExtendedStatus On
<IfModule mod_limitipconn.c>
    <Location /download>
        MaxConnPerIP 100
        NoIPLimit text/*
    </Location>
</IfModule>

のように書いて、/download以下のファイル(テキスト形式のファイル以外)に対し1度に接続できる数を100セッションに制限することができます。

もし、100セッションを超えて101セッションめが/download以下のファイルにアクセスしたら、下図のようなエラー503(Service Temporarily Unavailable)を返します。
503 Service Temporarily Unavailable

この時、/download以下のファイル毎にエラーメッセージを変えたいと思い、考えました。
まず、Apacheデフォルトのエラーメッセージを変更するには、以下のように書きます。
LoadModule limitipconn_module libexec/mod_limitipconn.so
ExtendedStatus On
<IfModule mod_limitipconn.c>
    <Location /download>
        MaxConnPerIP 100
        NoIPLimit text/*
        ErrorDocument 503 /error/503.html
    </Location>
</IfModule>

これで、/download以下のファイルへの接続数が100を越えた際には、/error/503.htmlが表示されます。

では、/download以下のcampaign.zipというファイルにアクセスした際には別のメッセージを表示させるには。
こう書きます。
LoadModule limitipconn_module libexec/mod_limitipconn.so
ExtendedStatus On
<IfModule mod_limitipconn.c>
    <Directory "/home/httpd/html/download">
        MaxConnPerIP 100
        NoIPLimit text/*
        ErrorDocument 503 /error/503.html
        <Files campaign.zip>
            ErrorDocument 503 /error/503-campaign.html
        <Files campaign.zip>
    </Directory>
</IfModule>


<Location>ディレクティブに<Files>ディレクティブをネストすることはできないので、この部分を<Directory>ディレクティブに変更しています。その上で、<Files>でファイルを特定して、503の時に表示させるメッセージを変更するようにしています。

サーバー構築・運用に関わるプロフェッショナルの方々の体験談や解説がいっぱい集まった、
こちら↓のページも合わせてご参照ください。
ブログランキング

テーマ:フリーソフト - ジャンル:コンピュータ

12:13:38 | Unix/Linux | トラックバック(0) | コメント(0) | page top↑
<<レイアウト変更 | ホーム | sendmailでRCPT TO後のレスポンスが遅い>>
コメント
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://iamse.blog110.fc2.com/tb.php/104-db3d6f48
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |