高频类 约束与限制 如果IP经过NAT,则只能获取到NAT转化后的IP地址,无法获取到NAT转化前的IP地址。 如果客户端为容器,只能获取到容器所在主机的IP地址,无法获取容器的IP。 四层监听器(TCP/UDP)开启“获取客户端IP”功能之后,不支持同一台服务器既作为后端服务器又作为客户端的场景。 独享型负载均衡的四层监听器(TCP/UDP)默认开启源地址透传功能,无需手动开启,且不支持关闭。 说明 如果客户端经过WAF+ELB访问服务器,则还可以通过WAF直接获取客户端真实IP。 七层服务 针对七层服务(HTTP/HTTPS协议),需要对应用服务器进行配置,然后使用XForwardedFor的方式获取来访者的真实IP地址。 实的来访者IP会被负载均衡放在HTTP头部的XForwardedFor字段,格式如下: XForwardedFor: 来访者真实IP, 代理服务器1IP, 代理服务器2IP, ... 当使用此方式获取来访者真实IP时,获取的第一个地址就是来访者真实IP。 配置Apache服务器 1. 安装Apache 2.4。 例如在CentOS 7.5环境下,可以执行如下命令执行安装: yum install httpd 2. 修改Apache的配置文件/etc/httpd/conf/httpd.conf,在最末尾添加以下配置信息。 LoadModule remoteipmodule modules/modremoteip.so RemoteIPHeader XForwardedFor RemoteIPInternalProxy 100.125.0.0/16 图 修改Apache的配置文件示例图 说明 将代理服务器的网段添加到 RemoteIPInternalProxy 。 共享型负载均衡需要添加的IP地址段为 100.125.0.0/16(100.125.0.0/16 是负载均衡服务保留地址,其他用户无法分配到该网段内,不会存在安全风险)和高防IP地址段。多个IP地址段用逗号分隔。 独享型负载均衡需要添加ELB实例关联的VPC子网网段。 3. 修改Apache的配置文件/etc/httpd/conf/httpd.conf,将日志输出格式修改为如下所示(%a代表源IP地址): LogFormat "%a %l %u %t "%r" %>s %b "%{Referer}i" "%{UserAgent}i"" combined 4. 重启Apache。 systemctl restart httpd 5. 查看httpd的访问日志,您可以获取真实的来访者IP。
来自: