質問

私は現在、Tomcat+Apache HTTPサーバの設定を自Java servlet:

ProxyPass /myservice http://localhost:8080/myservice
ProxyPassRerverse /myservice http://localhost:8080/myservice

これらはすべてる myservice ニーズを知るクライアントのIPアドレスに、常にすること127.0.0.1により行います。はありませていただきますのIPアドレスとは何ですか。はAJPオプション?

doGet(HttpServletRequest request, HttpServletResponse response){
    request.getRemoteAddr()
}
役に立ちましたか?

解決

このようにそれを実行します:

Apacheの設定でます:

<Location /foo>
  ProxyPass ajp://localhost:8009/foo
  ProxyPassReverse ajp://localhost:8009/foo
</Location>

そして、あなたのserver.xmlの

<Connector port="8009" 
           enableLookups="false" secure="true" URIEncoding="UTF-8"
           tomcatAuthentication="false"
           protocol="AJP/1.3" />

これは、すべてを通過する必要があります。 AJPプロトコルは、情報を渡しますが、HTTP:しません。

あなたはsecure =「true」の場合は、私が使用したくないかもしれないSSLは、Apache層で処理され、私は、接続が安全な1考慮されるべきであることを知るようにTomcatを必要とするのでます。

他のヒント

を読むことができX-転送のためのリクエストヘッダです。

から Apache mod_proxy書:

このようにリ-プロキシモードを使用してProxyPassディレクティブなど)商くつか追加しリクエストヘッダに情報を渡すためには、原産地サーバーです。これらのヘッダは以下になります:

  • X-転送のため:のIPアドレスするサービスです。
  • X-転送-ホスト:トの要求、クライアントはHTTPホストヘッダの情報を保存します。
  • しかし。:のホスト名、プロキシサーバーです。

利用の際にはご注意これらのヘッダのサーバかれましては複数のカンマで区切られた値が元のリクエストに含まれているこれらのツールを提供します。例えば、すでに%{X-転送のため}iのログ形式の文字列の起源はサーバーにログインのクライアントIPアドレスになる場合がありま複数のアドレスをご請求の場合にパスを通して複数のプロキシ.

おり、サーブレットについ:

doGet(HttpServletRequest request, HttpServletResponse response){
  request.getHeader("X-Forwarded-For")
}

これは非常に単純です。

<VirtualHost> 

 ServerName www.server.com

 redirect / http://www.server.com/foo

 ProxyRequests off
 ProxyPass / ajp://localhost:8009/

</VirtualHost>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top