私はさまざまなブログを読み、実際に行ってきましたが、考えられるすべてのシナリオで get client public ip を決定するための決定的かつ完全な証明方法を得ることができませんでした。サーバー側の構成は次のとおりです。F5 <--> Apache Web サーバー <--> Tomcat |
コードでは、最初にリクエスト ヘッダーX-FORWARDED-FOR
を取得して解析し、最も左側のパブリック IP を取得します。見つからない場合は、に依存しrequest.getRemoteAddr()
ます。
質問は次のとおりです。
これは場合によってはうまく機能しますが、プロトコルが HTTPS の場合は失敗します。この場合、何ができるでしょうか?
X-Forwarded-For
に値がない場合はrequest.getRemoteAddr()
、サーバーの IP を常に提供するものに依存する必要があります。これは、その間に位置しgetRemoteAddr
、リクエストを送信したクライアントまたは最後のプロキシのアドレスを返す Apache Web サーバーが原因です。このシナリオをどのように克服しますか?以外に値を読み取る必要がある他のヘッダーはあります
X-forwarded-for
か?対処すべき他の可能性のあるケースはどれですか?