负载均衡 后端服务器通过 CLB 获取客户端真实 IP

CLB 的四层监听器(TCP/UDP/TCP SSL/QUIC)支持直接在后端服务器上获取客户端真实 IP,无需进行额外配置。在默认情况下,后端服务器上获取的源 IP 即为真实的客户端 IP。

相关产品
负载均衡 产品页,含版本规格、价格与购买入口。

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

但是,当 CLB 和后端服务器之间存在一个或多个 NAT 网关时,后端的服务器无法接受到真实的客户端源 IP。针对此场景,在 CLB 四层监听器上可以开启 Proxy Protocol 配置,主动发起 Proxy Protocol,通过 Proxy Protocol 协议,携带真实的客户端源 IP 给到后端的服务器。

二、功能说明

·此功能仅标准账户类型支持,传统账户类型不支持,账户类型判断方式请参见 判断账户类型。

·仅 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 协议,其格式如下:

五、前提条件

·启用 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地址。

赞 (0)
上一篇 4天前
下一篇 4天前