开发者社区> 问答> 正文

获取客户端真实IP



负载均衡服务获取真实IP说明


负载均衡提供获取客户端真实IP地址的功能,该功能默认是开启的。


  • 四层负载均衡(TCP协议)服务可以直接在后端ECS上获取客户端的真实IP地址,无需进行额外的配置。

  • 七层负载均衡(HTTP/HTTPS协议)服务需要对应用服务器进行配置,然后使用X-Forwarded-For的方式获取客户端的真实IP地址。

    注意:负载均衡的HTTPS监听是在负载均衡服务上的加密控制,后端仍旧使用HTTP协议,因此,在Web应用服务器配置上HTTPS和HTTP监听没有区别。

      


常见Web应用服务器配置方法



配置IIS7/IIS8


  1. 下载并解压 F5XForwardedFor文件。

  2. 根据自己的服务器操作系统版本将x86\Release或者 x64\Release 目录下的 F5XFFHttpModule.dll 和 F5XFFHttpModule.ini拷贝到某个目录,比如 C:\F5XForwardedFor\。确保对IIS进程对该目录有读取权限。

  3. 打开IIS管理器,双击模块功能。

  4. 单击配置本机模块,然后在弹出的对话框中,单击注册

  5. 添加下载的.dll文件。

  6. 为添加的两个文件授权允许运行ISAPI和CGI扩展。

    确保您已经安装了ISAPI和CGI应用程序。


  7. 重启IIS服务器,等待配置生效。


配置Apache


  1. 运行以下命令安装Apache的一个第三方模块mod_rpaf。 wget http://nginx.org/download/nginx-1.0.12.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

修改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_address
  5. RPAFheader X-Forwarded-For

RPAFproxy_ips:此IP地址不是负载均衡提供的公网IP,具体IP请检查Apache日志,通常两个IP地址都要写上。

添加完成后重启Apache。
  1. /alidata/server/httpd/bin/apachectl restart


配置Nginx


  1. 运行以下命令安装http_realip_module。 wget http://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`

打开nginx.conf文件。
vi /alidata/server/nginx/conf/nginx.conf
在以下配置信息后添加新的配置字段和信息。
  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_address
  2. real_ip_header X-Forwarded-For;

set_real_ip_from IP:此IP地址不是负载均衡提供的公网IP,具体IP请检查Nginx日志,通常两个IP地址都要写上。

重启Nginx。
/alidata/server/nginx/sbin/nginx -s reload

展开
收起
行者武松 2017-10-17 15:38:03 6137 0
2 条回答
写回答
取消 提交回答
  • Re获取客户端真实IP
    是否支持udp协议获取clientip
    2017-12-15 15:43:56
    赞同 展开评论 打赏
  • Re获取客户端真实IP
    我是windows+apache的,完全不知道怎么操作啊
    2017-11-14 11:28:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载