takt@Wiki

TOMCAT×AJP

最終更新:

takt

- view
メンバー限定 登録/ログイン

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 を返します。
ウィキ募集バナー