Apache-Tomcatを連携させた状態でのURLによるアクセス制御-その1

アプリで、ドメイン名によってアクセス制御をしたい。


例えば、www.hoge.comのときは、、/foo/hoge*のみを実行し、www.fuga.comのときは、/foo/fuga*のみを実行するようにしたい。
さらに、www.hoge.comのとき、/foo/fuga*にアクセスされた場合は、404 Not Foundを返したい。


まずは、httpd.confに以下のように定義してみた。

LoadModule rewrite_module modules/mod_rewrite.so
・・・

    ServerName www.hoge.com
    ・・・
    RewriteEngine On

    # 存在しないURLに飛ばして無理やりNotFoundにしている。
    RewriteRule   !/foo/hoge.*   /DummyNotExist.html  [L] 




    ServerName www.fuga.com
    ・・・
    RewriteEngine On

    RewriteRule   !/foo/fuga.*   /DummyNotExist.html  [L]


そして、Tomcatと連携していない状態で、動作確認してみたところ、うまく動くことを確認。


次に、mod_jk2のworkers2.propertiesに以下を定義して、Tomcatに/foo/*.jspのURLを割り当てる。

[uri:/foo/*.jsp]

この状態で動作確認をしてみたところ。
想定どおりに行かない。
例えば、http://www.hoge.com/foo/fuga_1.jspにアクセスしようとすると普通に呼び出せてしまう。


どうやら、Tomcatに割り当てたURLとマッチするパターンが来た場合、mod_rewriteの処理前に、mod_jk2に処理が渡ってしまうらしい。


で、mod_jk2のworkers2.propertiesを以下のように変更。

[uri:www.hoge.com/foo/hoge*.jsp]

[uri:www.fuga.com/foo/fuga*.jsp]


これで、とりあえずうまく行った。というか、httpd.confに定義したルールは無駄だったと。