IPアドレスの取得機能

Alibaba Cloud Server Load Balancerは、クライアントの実際のIPアドレスを取得する機能を提供し、デフォルトで有効になっています。

  • レイヤ4ロードバランシングサービス(TCPプロトコル)の場合、リスナーはリクエストヘッダを変更せずにクライアントからのリクエストをバックエンドECSサーバに配信できます。 それにより、追加構成を行うことなしに、バックエンドのECSサーバから実際のIPアドレスを取得することができます。
  • レイヤ7ロードバランシングサービス(HTTP / HTTPSプロトコル)の場合、アプリケーションサーバーを構成し、X-Forwarded-Forヘッダーを使用してクライアントの実際のIPアドレスを取得する必要があります。
    実際のクライアントIPは、HTTPヘッダーのX-Forwarded-Forフィールドに次の形式で保存されます。
    X-Forwarded-For: the ユーザーの実際IP, プロキシサーバー 1-IP, プロキシサーバー 2-IP, ...

    この方法でクライアントの実際のIPを取得する際に、取得された最初のIPがクライアントの実際のIPとなります。

    HTTPSロードバランシングサービスの場合、SSL証明書はフロントエンドリスナーで構成され、バックエンドは引き続きHTTPプロトコルを使用します。 それにより、アプリケーションサーバー上の構成は、HTTP、HTTPSプロトコルと同様です。

IIS7/IIS8の構成

  1. F5XForwardedForダウンロード して解凍します。
  2. F5XFFHttpModule.dllF5XFFHttpModule.ini ファイルを解凍したフォルダのx86\Releasex64\ReleaseディレクトリからC:\F5XForwardedFor\のような特定のディレクトリにコピーします。 IISプロセスにこのフォルダへの書き込み権限があることを確実にします。
  3. IISマネージャーを開き、 モジュール機能をダブルクリックします。


  4. ネイティブモジュールの設定をクリックし、表示されるダイアログボックスでRegisterをクリックします・


  5. ダウンロードした .dllファイルを追加します。


  6. 追加されたファイルにISAPIとCGIの制限を加え、 制限をAllowedに設定します。
    ISAPIとCGIアプリケーションがインストールされていることを確実にします。


  7. IISマネージャーを再起動します。

Apacheの構成

  1. 次のコマンドを実行して、モジュールmod_rpafをインストールします。
     wget https://github.com/gnif/mod_rpaf/archive/v0.6.0.tar.gz
     tar zxvf mod_rpaf-0.6.tar.gz
     cd mod_rpaf-0.6
     /alidata/server/httpd/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
  2. /alidata/server/httpd/conf/httpd.confファイルを開き、次の情報をコンテンツの最後に追加します。
     LoadModule rpaf_module modules/mod_rpaf-2.0.so
     RPAFenable On
     RPAFsethostname On
     RPAFproxy_ips <IP_address>
     RPAFheader X-Forwarded-For
    プロキシサーバーのIPアドレスを取得するには、SLB( 100.64.0.0/10 (100.64.0.0/10 は Alibaba Cloud によって予約済みで、ユーザーには使用できません。セキュリティリスクはありません))のCIDRブロック、Anti-DDoS ProのCIDRブロックなどのポロキシサーバーのCIDRブロックを RPAFproxy_ips <IP_address>に追加します。 カンマで複数のCIDRブロックを区切ります。
  3. 追加後にApacheを再起動します。
    /alidata/server/httpd/bin/apachectl restart

Ngnxサーバーの構成

  1. 次のコマンドを実行してhttp_realip_moduleをインストールします。
     wget http://nginx.org/download/nginx-1.0.12.tar.gz
     tar zxvf nginx-1.0.12.tar.gz
     cd nginx-1.0.12
     ./configure --user=www --group=www --prefix=/alidata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
     make
     make install
     kill -USR2 `cat /alidata/server/nginx/logs/nginx.pid`
     kill -QUIT `cat /alidata/server/nginx/logs/ nginx.pid.oldbin`
  2. nginx.confファイルを開きます。
    vi /alidata/server/nginx/conf/nginx.conf
  3. 新しい構成フィールドと情報を次の構成情報の最後に追加します。
     fastcgi connect_timeout 300;
     fastcgi send_timeout 300;
     fastcgi read_timeout 300;
     fastcgi buffer_size 64k;
     fastcgi buffers 4 64k;
     fastcgi busy_buffers_size 128k;
     fastcgi temp_file_write_size 128k;

    追加必要な構成フィールド及び情報は次の通りです:

     set_real_ip_from IP_address
     real_ip_header X-Forwarded-For;
    プロキシサーバーのIPアドレスを取得するには、SLB( 100.64.0.0/10 (100.64.0.0/10 は Alibaba Cloud によって予約済みで、ユーザーには使用できません。セキュリティリスクはありません))のCIDRブロック、Anti-DDoS ProのCIDRブロックなどのポロキシサーバーのCIDRブロックを RPAFproxy_ips <IP_address>に追加します。 カンマで複数のCIDRブロックを区切ります。
  4. Nginxを再起動します。
    /alidata/server/nginx/sbin/nginx -s reload