1

現在、私はTomcatで実行されているWebサイトを実行しており、Apacheが前面にあり、キャッシング用のワニスがあります。Tomcat はポートで実行され8080、ポート81はニスのバックエンドとして使用されます。Web サイトにアクセスするクライアントのマシンの IP アドレスを知る必要がある機能を実装する必要があります。ヘッダーで IP アドレスにアクセスしようとしましたX-FORWARDED-FOR

ポート 81 (つまりhttp://mywebsite.com:81/ ) から Web サイトにアクセスすると、クライアントのマシンの IP アドレスを取得できますが、残念ながら、デフォルトのポート 80 (つまりhttp://mywebsite.com/ )からアクセスすると、 localhost IP アドレス (127.0.0.1) を返しています。ポート80からもユーザーの実際のIPアドレスを取得するために回避できることを誰かが提案できますか?

4

1 に答える 1

0

私が正しく理解していれば、あなたの設定は次のとおりです。

Varnish (ポート 80) -> Apache (ポート 81) -> Tomcat (ポート 8080)

そして、実際のリモート IP がREMOTE_ADDRTomcat サーバー上に表示されるようにします。

Varnish はX-Forwarded-Forデフォルトでヘッダーを追加するため、すでにソートされています。Apache が実際のリモート IP を Tomcat に渡すようにするには、Apache 用のリバース プロキシ追加転送モジュール (mod_rpaf) をインストールする必要があります。mod_rpaf は、探していることを正確に実行します。Apache の適切な構成は次のようになります。

<IfModule !rpaf_module>
    LoadModule rpaf_module modules/mod_rpaf-2.0.so
</IfModule>

<IfModule rpaf_module>
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1
    RPAFheader X-Forwarded-For
</IfModule>

モジュールを有効にすると、Tomcat は正しいREMOTE_ADDRヘッダーとヘッダーを認識しHTTP_X_FORWARDED_FORます。

于 2012-09-06T11:10:57.510 に答える