应用场景
客户端真实源IP地址可以用于分析网站流量和用户行为。通过分析来源IP地址,可以了解用户的地理位置、浏览器偏好和其他用户行为指标。这些数据可以用于优化网站设计、定位目标受众和改善用户体验。
工作原理
负载均衡的工作原理本身会将一个会话拆分成两段:第一段是从客户端到ELB;第二段是从ELB到后端主机。客户端访问业务的源IP地址是客户端IP地址,目的地址是ELB的服务地址,数据报文到达ELB后,ELB会将报文的源IP地址从客户端的IP地址替换为ELB的IP。ELB再根据客户预定义的负载算法选择的目标主机,将报文的目的IP地址替换为后端主机地址,再将数据转发到后端主机。所以后端主机得到的访问请求源IP地址是ELB的地址。在实际业务中,存在一些场景,需要通过客户的真实IP来达到统计和监控等目的。
- 天翼云集群模式资源池,HTTP/HTTPS ELB的监听器可以开启了X-Forwarded-For头字段,字段的格式如下:
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …
- 当使用此方式获取HTTP/HTTPS请求客户端真实IP地址时,获取到的第一个地址就是客户端真实IP。
主备、集群模式资源池列表见产品简介-产品类型和规格,实际情况以控制台展现为准。
前提条件
- 您已在所在可用区创建VPC,并创建业务主机,完成服务配置。
- 您已创建负载均衡实例。
操作步骤
- ELB侧开启七层负载获取客户端真实源IP地址。
- 在负载均衡页面,点击ELB实例名称,进入详情页面。
- 在监听器页签,点击“添加监听器”按钮,进入创建监听器配置页面。
- 在监听器配置页面,可见获取客户端源IP开启选项,用户可自主控制开启或关闭。
- 后端云主机内通过X-Forwarded-For获取客户端源IP方法,以常见的Nginx为例。
- 例如在CentOS 7.5环境下,假设安装目录为ctelb/,执行命令配置时以实际路径为准。
- 执行以下命令安装http_realip_module。
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …
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=/ctelb/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
make
make install
kill -USR2 `cat /ctelb/server/nginx/logs/nginx.pid`
kill -QUIT `cat /ctelb/server/nginx/logs/ nginx.pid.oldbin`
- 执行以下命令,打开nginx.conf文件。
vi /ctelb/server/nginx/conf/nginx.conf
- 在以下配置信息后添加新的配置字段和信息。
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;
- 执行以下命令,重启Nginx。
/ctelb/server/nginx/sbin/nginx -s reload
- 查看访问日志,您可以获取客户端真实源的来访者IP地址。
cat /ctelb/server/nginx/logs/access.log