tencent cloud

负载均衡

动态与公告
产品动态
产品公告
产品简介
产品概述
产品优势
使用场景
技术原理
产品对比
使用约束
Service Regions and Service Providers
购买指南
计费概述
计费项
CLB 资源包
购买方式
欠费说明
产品属性选择
快速入门
域名化负载均衡快速入门
负载均衡快速入门
IPv6 负载均衡快速入门
CentOS 下部署 Nginx
CentOS 下部署 Java Web
操作指南
负载均衡实例
负载均衡监听器
后端服务器
健康检查
证书管理
日志管理
监控告警
访问管理
传统型负载均衡
实践教程
部署证书到负载均衡(双向认证)
负载均衡开启 Gzip 配置及检测方法说明
HTTPS 转发配置入门指南
如何获取客户端真实 IP
负载均衡配置监控告警最佳实践
产品高可用说明
均衡算法选择与权重配置示例
配置 WAF 对负载均衡的监听域名进行 Web 安全防护
配置 IAP 对负载均衡的域名和路径的web访问进行身份验证
配置 IAP 对负载均衡的域名和路径的程序化访问进行身份验证
运维指南
客户端 timewait 过多解决方案
负载均衡HTTPS服务性能测试
压力测试常见问题
CLB 证书操作权限问题
故障处理
UDP 健康检查出现异常
API 文档
History
Introduction
API Category
Instance APIs
Listener APIs
Backend Service APIs
Target Group APIs
Redirection APIs
Other APIs
Classic CLB APIs
Load Balancing APIs
Making API Requests
Data Types
Error Codes
CLB API 2017
常见问题
计费相关
负载均衡配置相关
健康检查异常排查
HTTPS 相关
WS/WSS 协议支持相关
HTTP/2 协议支持相关
默认域名阻断提示
服务等级协议
联系我们
词汇表
文档负载均衡实践教程如何获取客户端真实 IP后端服务器通过 CLB 获取客户端真实 IP

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

PDF
聚焦模式
字号
最后更新时间: 2025-07-09 11:29:17

负载均衡获取客户端真实 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 协议能力,直接打开特性开关,很可能会导致后端服务解析异常,从而影响服务可用性。
该功能不支持在线平滑迁移,切换到 Proxy Protocol 需要业务停服升级,请谨慎配置。
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 监听器下,单击目标监听器的详情,查看 Proxy Protocol 配置为已开启。若未开启时,请编辑监听器,并在高级选项中,勾选 Proxy Protocol 配置,并提交保存。


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

此处以 CentOS 7.9操作系统、Nginx 1.20.1版本配置为例介绍。具体请以您实际使用的环境为准。
1. 登录后端服务器,执行 nginx -t 命令查看配置文件所在路径。默认通常为 /etc/nginx/nginx.conf,具体请以实际环境为准。
2. 修改配置文件中的 Proxy Protocol 内容并保存,修改点可参考下方说明。
http {
# Ensure $proxy_protocol_addr is set. This variable is used to record the real client IP address.
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"';
# Taking the listening port 80 as an example, add the proxy_protocol field.
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地址。



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈