クライアント向けのプロジェクトのデモをセットアップしています。私のサーバーには、さまざまなポートのさまざまなサーバーで実行されているさまざまなテクノロジで構築された多くのサイトがあります。それらすべてのリバース プロキシとして nginx を使用しています。この特定のアプリケーションは Java (Spring MVC / Blazeds) で構築されており、デモ用に tomcat 6 にデプロイされます (おそらく実稼働環境でも)。Nginx には、X-REAL-IP ヘッダーで元のリクエストの IP アドレスを渡すことができるリバース プロキシとして使用する場合の優れた設定があります。私がやりたいことは、X-REAL-IP ヘッダーを実際の要求 IP アドレスとして扱うように、アプリケーションまたは少なくとも tomcat をセットアップすることです。これは可能ですか?
2385 次
2 に答える
3
それは、「実際のリクエスト IP」の意味によって異なります。そこから返された値について話しているのであればrequest.getRemoteAddr()
、可能です。
これを行うには、すべての URL (または X-REAL-IP を返したい URL のみ) をインターセプトするサーブレット フィルターを Web アプリケーションに設定し、そのフィルターで着信要求をその子孫にラップしますHttpServletRequestWrapper
。getRemoteAddr()
X-REAL-IP 値を返すようにオーバーライドします。
于 2009-07-26T23:21:32.623 に答える
2
Tomcat を使用してこれを行うことができますRemoteIpValve
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-REAL-IP"
requestAttributesEnabled="true"
internalProxies="127.0.0.1" />
そうすれば、 を呼び出すとrequest.getRemoteAddr()
、正しい情報が提供されます。ところで、より標準的なヘッダーであるX-Forwarded-For
.
于 2015-07-28T19:34:39.217 に答える