阅读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 配置不同会话保持规则__最佳实践_负载均衡-阿里云