負載平衡服務獲取真實IP說明

負載平衡提供獲取用戶端真實IP地址的功能,該功能預設是開啟的。

  • 四層負載平衡(TCP協議)服務可以直接在後端ECS上獲取用戶端的真實IP地址,無需進行額外的配置。
  • 七層負載平衡(HTTP/HTTPS協議)服務需要對應用伺服器進行配置,然後使用X-Forwarded-For的方式獲取用戶端的真實IP地址。
    真實的用戶端IP會被負載平衡放在HTTP頭部的X-Forwareded-For欄位,格式如下:
    X-Forwarded-For: 使用者真實IP, Proxy 伺服器1-IP, Proxy 伺服器2-IP,...

    當使用此方式獲取用戶端真實IP時,獲取的第一個地址就是用戶端真實IP。

    说明 負載平衡的HTTPS監聽是在負載平衡服務上的加密控制,後端仍舊使用HTTP協議,因此,在Web應用伺服器配置上HTTPS和HTTP監聽沒有區別。

配置IIS7/IIS8伺服器

  1. 下載並解壓 F5XForwardedFor檔案。
  2. 根據自己的伺服器作業系統版本將x86\Release或者 x64\Release目錄下的 F5XFFHttpModule.dllF5XFFHttpModule.ini拷貝到某個目錄,比如 C:\F5XForwardedFor\。確保IIS進程對該目錄有讀取許可權。
  3. 開啟IIS管理器,雙擊模組功能。


  4. 單擊配置本機模組,然後在彈出的對話方塊中,單擊註冊


  5. 添加下載的.dll檔案。


  6. 為添加的兩個檔案授權允許運行ISAPI和CGI擴充。
    说明 確保您已經安裝了ISAPI和CGI應用程式。


  7. 重啟IIS伺服器,等待配置生效。

配置Apache伺服器

  1. 運行以下命令安裝Apache的一個第三方模組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. 修改Apache的設定檔/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
    说明 如果您要獲取Proxy 伺服器的地址,可以將Proxy 伺服器的網段添加到RPAFproxy_ips <IP_address>,如負載平衡的IP地址段100.64.0.0/10(100.64.0.0/10 是阿里云保留地址,其他用户无法分配到该网段内,不会存在安全风险)和高防IP地址段。多個IP地址段用逗號分隔。
  3. 添加完成後重啟Apache。
    /alidata/server/httpd/bin/apachectl restart

配置Nginx伺服器

  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;
    说明 如果您要獲取Proxy 伺服器的地址,可以將Proxy 伺服器的網段添加到set_real_ip_from <IP_address>,如負載平衡的IP地址段100.64.0.0/10(100.64.0.0/10 是阿里云保留地址,其他用户无法分配到该网段内,不会存在安全风险)和高防IP地址段。多個IP地址段用逗號分隔。
  4. 重啟Nginx。
    /alidata/server/nginx/sbin/nginx -s reload