TOMCATとの連携(AJP利用)
AJP連携時のTomcatのServerPortの設定
Apache-Tomcatの連係をしていて、Tomcat側のRequest.getServerPort() メソッドを使うとApacheが受けたポート番号が帰ってきます。
#AJPは、標準だと8009で受けているはずなのに。
これは、ApacheがAPJプロトコルの中でProxyPortとして80をTomcatに教えてあげているからです。
なるほど。
この動作は、Apacheが直接リクエストを受けてTomcatに転送している場合は、いい感じに動くのですが、いったんProxyを経由したりしていると、うまく動かない場合が出てきます。
例えば、Apache内部でVirtualHostを8001で立てて、そこにRedirectしてからTomcatと連携したりすると getServerPort() メソッドは8001を返してしまいます。
これに対しては、Tomcatのserver.xml のAJP Connector の設定でProxyPortを指定してあげることでうまいこと回避可能です。
例えばこんなん。 <Connector enableLookups="false" port="8009" protocol="AJP/1.3" redirectPort="8443" proxyPort="80" />
これなら、AJPで受けたリクエストのgetServerPort() は常に80 を返します。