ProxyPass,ProxyReverse vs AJP
質問
私は現在、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-転送のためのリクエストヘッダです。
このようにリ-プロキシモードを使用して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>
所属していません StackOverflow