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に定義したルールは無駄だったと。