閱讀1004 返回首頁    go 人物


獲取來訪真實IP的方法__最佳實踐_負載均衡-阿裏雲

負載均衡服務通過以下方式獲取來訪的真實 IP 地址:

  • 4 層負載均衡(TCP協議)服務可以直接在後端 ECS 上獲取來訪者真實 IP 地址,無需進行額外的配置。
  • 7 層負載均衡(HTTP協議)服務需要對應用服務器進行配置,然後使用 X-Forwarded-For 的方式獲取訪問者真實 IP。

本文針對 7 層(HTTP協議)負載均衡服務,介紹了如何配置以下常見應用服務器,從而可獲取來訪者真實 IP。

  • IIS 6
  • IIS 7
  • Apache
  • Nginx

IIS 6 配置方案

配置 IIS 6 服務器,通過 IIS 6 日誌獲取來訪者真實 IP 地址,您需要完成如下操作:

  1. 下載 F5XForwardedFor.dll 插件,下載地址為 下載 F5XForwardedFor 插件
  2. 安裝 F5XForwardedFor.dll 插件:
    1. 根據自己的服務器操作係統版本,將 x86Release 或者 x64Release 目錄下的 F5XForwardedFor.dll 文件拷貝到某個目錄,這裏假設為 C:ISAPIFilters,確保 IIS 進程對該目錄有讀取權限。
    2. 打開 IIS 管理器,找到當前開啟的網站。
    3. 右鍵單擊該網站,然後單擊 屬性,打開屬性頁。
    4. 在屬性頁上,打開 “ISAPI 篩選器”,然後單擊 添加 按鈕,打開 “添加窗口”。
    5. 在添加窗口中,篩選器名稱 填寫 “F5XForwardedFor”,可執行文件 填寫F5XForwardedFor.dll 的完整路徑,然後點擊 確定
  3. 重啟 IIS 服務器,等待配置生效。

IIS 7 配置方案

配置 IIS 7 服務器,通過 F5XForwardedFor 模塊獲取來訪者真實IP,您需要完成如下操作:

  1. 下載插件 F5XForwardedFor 模塊,下載地址為 F5XForwardedFor 下載地址
  2. 安裝插件 F5XForwardedFor 模塊:

    1. 根據服務器操作係統版本將 x86Release 或者 x64Release 目錄下的 F5XFFHttpModule.dll 文件和 F5XFFHttpModule.ini 文件拷貝到某個目錄,這裏假設為 C:F5XForwardedFor,確保 IIS 進程對該目錄有讀取權限。
    2. 打開 IIS 管理器,雙擊 模塊

    3. 模塊 窗口,單擊 配置本機模塊

    4. 在彈出框中單擊 注冊

    5. 添加下載的 DLL 文件,以下圖片提供了兩個示例。

    6. 添加完成後,在 “配置本機模塊” 窗口的列表中勾選添加的模塊,並單擊 確定

    7. 在“ISAPI 和 CGI 限製”窗口中,添加這兩個 DLL,並將 限製 改為 “允許”:

  3. 重啟 IIS 服務器,等待配置生效。

Apache 配置方案

  1. 運行以下命令,安裝 Apache 的第三方模塊 mod_rpaf:

    1. wget https://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
    2. tar zxvf mod_rpaf-0.6.tar.gz
    3. cd mod_rpaf-0.6
    4. /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,在最末尾添加以下配置信息:

    1. LoadModule rpaf_module modules/mod_rpaf-2.0.so
    2. RPAFenable On
    3. RPAFsethostname On
    4. RPAFproxy_ips <IP地址>
    5. RPAFheader X-Forwarded-For

    注意:RPAFproxy_ips <IP地址>這行中,IP 地址不是負載均衡提供的公網 IP,您可以查看 Apache 日誌確定具體 IP 地址,通常會有2個,都需要提供。以下代碼提供了一個具體示例。

    1. LoadModule rpaf_module modules/mod_rpaf-2.0.so
    2. RPAFenable On
    3. RPAFsethostname On
    4. RPAFproxy_ips 10.242.230.65 10.242.230.131
    5. RPAFheader X-Forwarded-For
  3. 運行以下命令重啟 Apache:

    1. /alidata/server/httpd/bin/apachectl restart

Nginx配置方案

配置 Nginx 服務器,通過使用 http_realip_module 獲取來訪真實 IP,您需要完成以下操作:

  1. 加裝 --with-http_realip_module

    1. wget https://soft.phpwind.me/top/nginx-1.0.12.tar.gz
    2. tar zxvf nginx-1.0.12.tar.gz
    3. cd nginx-1.0.12
    4. ./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
    5. make
    6. make install
    7. kill -USR2 `cat /alidata/server/nginx/logs/nginx.pid`
    8. kill -QUIT `cat /alidata/server/nginx/logs/ nginx.pid.oldbin`
  2. 打開 nginx.conf 配置文件:

    1. vi /alidata/server/nginx/conf/nginx.conf
  3. 在以下配置信息後添加新的配置字段和信息:

    1. fastcgi connect_timeout 300;
    2. fastcgi send_timeout 300;
    3. fastcgi read_timeout 300;
    4. fastcgi buffer_size 64k;
    5. fastcgi buffers 4 64k;
    6. fastcgi busy_buffers_size 128k;
    7. fastcgi temp_file_write_size 128k;

    需要添加的配置字段和信息為:

    1. set_real_ip_from <IP 地址>;
    2. real_ip_header X-Forwarded-For;

    注意:set_real_ip_from <IP 地址>中的 IP 地址不是負載均衡提供的公網 IP,您需要查看 Nginx 日誌確定具體 IP 地址,如果有多個 IP 地址,都需要提供。

  4. 重啟 Nginx 服務器:

    1. /alidata/server/nginx/sbin/nginx -s reload

最後更新:2016-12-14 16:21:38

  上一篇:go 健康檢查異常的排查思路__最佳實踐_負載均衡-阿裏雲
  下一篇:go 配置不同會話保持規則__最佳實踐_負載均衡-阿裏雲