最近更新时间:2024-04-18 19:47:01
当使用ALB监听转发流量时,可以通过X-Forwarded-For来获取客户端真实IP。本文以配置Nginx服务器为例,实践通过X-Forwarded-For字段获取客户端真实IP。
七层负载均衡(HTTP或HTTPS协议)支持在HTTP头部的X-Forwarded-For字段保留客户端真实IP信息,服务器进行相应配置后即可获取到客户端真实IP地址。
X-Forwarded-For字段格式如下:
X-Forwarded-For: <客户端真实IP,代理服务器1-IP,代理服务器2-IP,...>
当使用此方式获取客户端真实IP时,获取的第一个地址就是客户端真实IP。
在实例页面,新建一个公网ALB实例。
在监听器页面,找到目标ALB实例,新建一个监听器。
新建监听器时,开启”个性化配置“,将X-Forwarded-For头字段配置为true。
新建转发策略,将目标服务器组配置到负载均衡后端。
在后端服务器KEC实例上部署Nginx,具体步骤如下:
登录云服务器控制台,新建一台KEC实例作为服务端。
使用wget命令,下载Nginx的rpm。本文以CentOS 7.6版本的操作系统为例。
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
执行以下命令,建立Nginx的yum仓库。
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
执行以下命令,安装Nginx。
yum -y install nginx
执行以下命令,启动Nginx并设置开机启动。
systemctl start nginx
systemctl enable nginx
在任意终端使用浏览器访问“http://KEC的公网IP地址”,显示如下页面,说明Nginx安装成功。
执行nginx -t
命令查看配置文件所在路径,默认通常为 /etc/nginx/nginx.conf
,确保文件中设置了变量$http_x_forwarded_for,其用于记录X-Forwarded-For的值。
将后端服务器KEC实例添加进负载均衡后端的服务器组。
登录云服务器控制台,新建一台KEC实例作为客户端。
使用vi /etc/hosts
命令,在客户端的host文件中配置ALB绑定的EIP和转发策略中域名的映射关系。
客户端使用curl 域名:端口
命令访问服务端。
检查Nginx日志来判断是否成功获取到了客户端的真实IP地址。使用tail -f /var/log/nginx/access.log
查看日志。
每行日志中,$http_x_forwarded_for
变量对应的字段中,第一个IP地址即为客户端真实IP地址。
纯净模式