Tomcat-Apacheのmod_jk2による連携でハマった箇所
mod_JK2コネクターで、ワンApache-マルチTomcat環境を構築し、ApacheにVirtualHostを設定して、worker2.propertiesにもVirtualhostを設定したときの話。
※具体的にはこんな風に書いたとき
[channel.socket:localhost:8009] host=localhost port=8009 group=tomcat-a [channel.socket:localhost:8019] host=localhost port=8029 group=tomcat-b [uri:hostname-a/*.jsp] group=tomcat-a [uri:hostname-b/*.jsp] group=tomcat-b ※apacheにはIP Based VirtualHostを設定
どうしてもコネクタを経由してくれない様な場合にはhttpd.confのServerNameを疑った方が良い。jk2コネクタのバーチャルホストはここをみて振り分けをしているらしい。
特にIPベースでのバーチャルホストだと、ブラウザで指定されたサーバーネームがまちがっていても「つながってしまう」ので気付かない。(DomainNamebasedなVirtualHostだとそもそもつながらんので気付く)
まあ、全部が正しく設定されていれば間違うはずはないんだけれどねー。
しかし、ということはだ、想像できるトリッキーな振り分け(Tomcatでドメインをみて振り分けるような)は簡単に出来ないって事なんだなあ。まあApacheにもTomcatにも全部バラバラに書けばいいんだけれど、なかなか手間だぞ(勿論JK2のVirtualHostをつかわなければ大丈夫)。