Webサーバは、要求元のクライアントの実際のアドレスを取得します

クライアントまたはサーバーを取得することは、Webページを要求、IPは、注意が必要な取得 要求する前に、サーバーに到達したので、そのようなリバースプロキシサーバhttp://192.168.1.10:port/として、プロキシサーバを経由して、通常は1つ以上の層を、 127.0.0.1または192.168.1.10はなく、クライアントの実際のIP:request.getRemoteAddr()IPアドレスの取得方法とURL http://www.xxx.com/にリバースプロキシのURLがあるとき。しかし、プロキシサーバーの後、リクエストヘッダには、いくつかの複数のフィールドになり、私たちは、これらのフィールドではなく、IP生成されたプロキシサーバーを介してベースの本当のIPを取得することができます。

    文字列IP = request.getHeader( "X-転送さ-について")。
    もし(StringUtils.isNotEmpty(IP)&&! "unKnow" .equalsIgnoreCase(IP)){
        // IP繰り返しリバースプロキシ複数の値を持つ、IPは、最初の本当のIPがあります
        文字列[] IPLIST = ip.split( "")。
        IP = IPLIST [0]。
     }他{
        IP = request.getHeader( "X-のReal-IP");
        もし(StringUtils.isEmpty(IP)|| "UNKNOWN" .equalsIgnoreCase(IP)){
            IP = request.getRemoteAddr();
        }
     }

REMOTE_ADDR
IPアドレスは、クライアントのIPに代わって要求し、リモートホスト、REMOTE_ADDRを表すが、その値は、クライアントによって提供されていませんが、お使いのブラウザがWebサイトを訪問する際に、IPに基づいて、サーバーは、クライアントを指定し、それが仮定されます任意の中間エージェントなしで、そのサイトのWebサーバー(などnginxの、Apacheは、)REMOTE_ADDRプロキシを使用する場合は、お使いのブラウザはこのことから、プロキシにアクセスし、最初のでしょう、あなたのマシンのIPを設定して配置しますWebサーバは、このプロキシマシンREMOTE_ADDR IPを設定するように、サイトに転送演技
x_forwarded_for
上述したように、あなたがプロキシを使用する場合XFF短いヘッドは、それが本当のIPであるクライアント側のHTTPリクエストを表し、このときだけは、HTTPプロキシまたはサーバーの負荷分散を使用してWebサーバーに追加されます私はこのような状況を避けるために、プロキシサーバーは通常、ヘッダと呼ばれるx_forwarded_forが増加します、あなたの本当のIPを知らない、その最後に、顧客のIP接続(つまり、あなたのインターネットマシンのIP)ヘッダ情報、それほどに追加サイトには、実際のWebサーバに到達できることを保証するために、IP
一般的な形式:
1
X-転送さ-の場合:1.1.1.1、2.2.2.2、3.3.3.3
1.1.1.1代表的な要求は、3つのエージェントの後に、第一層は2.2.2.2で、3.3.3.3は第二層であり、この要求のソースがIP4.4.4.4剤の第三の層であり、発行されます
X-リアルタイムIP
複数のエージェントがある場合、あなたは「proxy_set_headerのX-のReal-IPの$設定することができます REMOTE_ADDR」 最初のリバースプロキシ上の  この時間は、によって X-のReal-IPの取得本当のクライアントのIP  
-----------------------------------------
X-転送さ-のために、一般的に非透過プロキシの各X-転送さ-用に追加のリクエスト上流のサーバのIPアドレスを転送する、コンマは分割
X-のReal-IPエージェントは、一般的に上流IPの最後のものですアドレスに付加されたヘッダ
X-転送先のIPアドレスを複数、及びX-実IPプロキシサーバの特定の値を設定することが可能であるということです。

おすすめ

転載: www.cnblogs.com/doit8791/p/11809908.html