ユーザ用ツール

サイト用ツール


Sidebar

ミドルウェア系:apacheモジュール:mod_vlimit仕様

mod_vlimit仕様

自分で作った割に結構忘れるのでメモ。

VlimitIP

  • アクセス元IP単位で接続数を制限
    • VlimitIP 2とかすれば、アクセス元IPAも2接続、Bも2接続、Cも2接続…と制限される。
    • 制限数を超えると503
  • 任意のDirectiveを通過したIPの接続数をカウント
    • 例えば、<Location /hoge> VlimitIP 2 </Location>だったら、/hoge以下にアクセスしてるIPのなかで、同一IPからの接続数が2本以上だったら503を返す。
    • /hogeに2本、アドレスAからアクセスしていて、次に/hogeにAからアクセスしにきたら503になるが、/fugaとかにAからアクセスしても503にならない。あくまで、/hoge以下にアクセスしている同一IPをカウント
    • ここがlimitipconnとかとは違うところ
  • <FilesMatch ^.*\.cgi$>とかの正規表現も使える
    • これもどうように、この正規表現にマッチしたアクセスの中で同一IPをカウントする

VlimitFile

  • ファイル単位で接続数を制限
    • とあるファイルに対してVlimitFile 3とかしてやれば、すべての接続元からそのファイルに対して3接続しかできない
    • アドレスAから一本、Bから二本、そのファイルにアクセス中であれば、Cがアクセスすると503になる
    • 当然アドレスAから3本アクセスしていれば、どの接続元からアクセスしても503になる
  • 正規表現を使った場合
    • 正規表現にマッチしたそれぞれのファイル名がカウンターを持つ
    • <FilesMatch “^.*\.cgi$”> VlimitFile 2とかしてたら、a.cgiも接続数2本、b.cgiも2本…とカウンターを持つ
    • <Directory … とかしてたら、そのDirectory配下すべてのファイルのbasenameをカウントする
    • ベースファイル名で見る。/path/to/a.cgi/path/a.cgia.cgiのカウンターを共有する
      • フルパスでマッチさせたい場合は、<Files “a.txt”> VlimitFile 10 /www/hoge/huga/001/a.txt </Files>みたいに書く

フルパスオプションの使いどころ

  • VlimitIPVlimitFileも第二引数にフルパスを指定できる
  • これを使うと、例えば、とあるファイルやディレクトリに対して複数のシンボリックリンクが張られている場合、Apache httpd内部ではシンボリックリンクのリンク元解析は行わないので、別のファイルと判断する。これをされると、負荷をかけるファイルに制限をしていてもシンボリックリンクを貼るだけで、制限対象にならないようにできる。それを回避するために、フルパスにリンク元のリアルパスを指定しておくことで、どんなリンク経由からでも同一のファイルとみなしてカウントしてくれる。
    • 例えばとあるVirtualHost A 以下のファイルに制限をかけていて、そのVirtualHost A に別のVirtualHost B でリンクを貼ってマルチドメインを提供する等のサーバ仕様であった場合、A以下のhoge.cgiに制限をかけていても、Bドメイン経由でhoge.cgiにアクセスした場合は制限にならない。しかし、フルパスを指定しておけばそれを回避できる。
ミドルウェア系/apacheモジュール/mod_vlimit仕様.txt · 最終更新: 2013/04/29 22:52 by matsumoto_r