文档中心>实践教程>负载均衡>如何获取客户端真实 IP>后端服务器通过 CLB 获取客户端真实 IP

后端服务器通过 CLB 获取客户端真实 IP

最近更新时间:2025-06-11 12:21:12

我的收藏

负载均衡获取客户端真实 IP 的说明

CLB 的四层监听器(TCP/UDP/TCP SSL/QUIC)支持直接在后端服务器上获取客户端真实 IP,无需进行额外配置。在默认情况下,后端服务器上获取的源 IP 即为真实的客户端 IP。
但是,当 CLB 和后端服务器之间存在一个或多个 NAT 网关时,后端的服务器无法接受到真实的客户端源 IP。针对此场景,在 CLB 四层监听器上可以开启 Proxy Protocol 配置,主动发起 Proxy Protocol,通过 Proxy Protocol 协议,携带真实的客户端源 IP 给到后端的服务器。
注意:
使用该功能需要后端服务器同时开启 Proxy Protocol,这样后端服务器才可以获取到客户端真实的 IP 地址,如果后端服务器不具备解析 Proxy Protocol 协议能力,直接打开特性开关,很可能会导致后端服务解析异常,从而影响服务可用性。
该功能不支持在线平滑迁移,切换到 ProxyProtocol 需要业务停服升级,请谨慎配置。
CLB 仅支持 Proxy Protocol v2 版本。Proxy Protocol v2 版本支持多种传输协议,如 TCP 和 UDP,更多信息,请参见 The PROXY protocol

功能说明

此功能仅标准账户类型支持,传统账户类型不支持,账户类型判断方式请参见 判断账户类型
仅 IPv4 和 IPv6 实例的 TCP/UDP/TCP SSL/QUIC 监听器支持该功能。
IPv6 CLB 的TCP/UDP监听器的 Proxy Protocol 配置功能还在灰度中,如有需要请提交 工单申请

Proxy Protocol 协议说明

使用 Proxy Protocol,代理服务器在转发请求时将客户端的原始网络连接信息封装在请求头部中,发送给后端服务器。后端服务器通过解析 Proxy Protocol 头部,就可以获得客户端的真实网络连接信息,包括源 IP 地址、源端口以及传输协议等。
通过使用 Proxy Protocol,后端服务器可以准确获取客户端的原始网络连接信息,从而进行更准确的日志记录、访问控制、流量监控等操作。

Proxy Protocol V2

Proxy Protocol V2 协议采用二进制格式,支持 TCPv4、TCPv6、UDPv4、UDPv6 协议,其格式如下:

IPv4 格式



IPv6 格式



前提条件

启用 Proxy Protocol 之前,请确保您的后端服务器支持 Proxy Protocol v2 版本,否则会导致新建连接失败。
本文以 IPv4 CLB 的 TCP 监听器为例进行介绍。

操作步骤

步骤1:为 TCP 监听器打开 Proxy Protocol 配置

1. 登录 负载均衡控制台,在左侧导航栏单击实例管理
2. 在 CLB 实例列表页面左上角选择地域,在实例列表右侧的操作列中单击配置监听器
3. TCP/UDP/TCP SSL/QUIC 监听器下,单击目标监听器的详情,查看 ProxyProtocol 配置为已开启。若未开启时,请编辑监听器,并在高级选项中,勾选 ProxyProtocol 配置,并提交保存。


步骤2:为后端服务器开启 Proxy Protocol

此处以 CentOS 7.9操作系统、Nginx 1.20.1版本配置为例介绍。具体请以您实际使用的环境为准。
1. 登录后端服务器,执行 nginx -t 命令查看配置文件所在路径。默认通常为 /etc/nginx/nginx.conf,具体请以实际环境为准。
2. 修改配置文件中的 Proxy Protocol 内容并保存,修改点可参考下方说明。
http {
# 确保设置$proxy_protocol_addr,该变量用于记录客户端真实IP
log_format main '$proxy_protocol_addr - $remote_addr- $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 以80监听端口为例,增加proxy_protocol字段
server { listen 80 proxy_protocol;
#...
}
}
3. 执行 sudo nginx -s reload 命令,重新加载 Nginx 配置文件。

步骤3:验证后端服务器可获取客户端真实 IP

当 Nginx 作为后端服务器时,您可以通过检查 Nginx 日志来判断是否成功获取到了客户端的真实 IP 地址。
Nginx 日志文件默认路径为:/var/log/nginx/access.log
每行日志中,$proxy_protocol_addr 变量对应的 IP 地址即为客户端真实IP地址。



如果遇到产品相关问题,您可咨询 在线客服寻求帮助。

返回顶部