私は基礎データベースのデータを持つWebページを提供するJavaアプリケーションを作成しています。私はいくつかのIP制限に基づいてWebページへのアクセスを制限しています。基本的に、「Accepted」の範囲に入るIPはWebページにアクセスでき、この範囲外のIPはエラーページにリダイレクトされます。以下、私が使用していますページにアクセスしようとするユーザーのIPアドレスを取得するには:Apacheのプロキシによって隠されているHttpServletRequestオブジェクトのリモートIPアドレス
String userIPAddress = request.getRemoteAddr();
「要求」を私のHttpServletRequestオブジェクトです。
私は、このWebページがApache Webサーバーを介してプロキシされているという問題に取り組んでいます。
この場合、クライアントのIPアドレスが失われ、ファイアウォールのIPアドレスが使用されます。したがって、私がrequest.getRemoteAddr()にアクセスすると、顧客がどこからWebページにアクセスしようと試みても、同じIPが返されます。
直接IPアドレスを使用してWebページにアクセスすると、IPチェックがうまく動作します。この問題は、プロキシを介してアクセスするときに発生します。
クライアントの実際のIPアドレスにアクセスするためにプログラムで実行できることはありますか?あるいは、この情報を通過させるためにApache Webサーバーを介して行われ/変更されなければならないことがありますか?その場合は、より良いフォーラムになるなら、私はServer Faultに投稿することができます。
ご協力いただき誠にありがとうございます。
よろしくお願いいたします。
これは非常に有用な情報です。 HTTPでProxyPassを使用する場合、X-Forwarded-Forヘッダーは自動的にインクルードされますか?あるいは、これを含めるためにApache内で何かを設定する必要がありますか? – MotoDave452
デフォルトでは、 'request.getHeader(" X-FORWARDED-FOR ")'(またはそのようなもの、私はJavaの専門家ではありません:)を見てください) –