TomcatのValve
Tomcat のアクセス制限をしようと RemoteAddrValve を使っていてはまってました.
2 台のホストを用意して,片方に Apache + mod_jk を入れ,片方で Tomcat 5.0.28 を動かしました.mod_jk の設定をして,Apache が動作しているホストにたいしてブラウザから "http://ホスト名/hoge/" と URI を指定してアクセスすると,Tomcat 側のアプリにアクセスするように設定しました.
Tomcat 側では 127.0.0.1 からの接続しか許さない設定にします.
まずは Apache の動作しているホスト上でブラウザを起動し,Tomcat の Coyote コネクタ (Port 8080) に直接アクセスしてみます.当然 Forbidden が返ります.しかし,ブラウザで "http://localhost/hoge/" と入れて Apache の mod_jk 経由でアクセスすると,アクセス出来てしまうのです.うむむ...
しばらくはまってましたが,AccessLogValve を使ってみて,理由がなんとなく分かりました."http://localhost/hoge/" と入れてアクセスすると,Tomcat 側ではリモートのホストからのアクセスにもかかわらず,ログには 127.0.0.1 と記録されます."http://127.0.0.1/hoge/" でも同じ.では Apache が動作しているホスト名を指定して "http://apache/hoge/" のようにアクセスすると,きちんと Apache が動作しているホストのアドレスが記録されます.そしてちゃんと RemoteAddrValve も機能して Forbidden が返ります.
というわけで,AJP コネクタは実際の接続元を見ているのではなく,なんとなく AJP プロトコル内のホスト名を見るとか,そういうことをしているんじゃないですかねぇ.
ソースを見てないので,なんとも言えませんが...