You need to enable JavaScript to run this app.
文档中心
负载均衡

负载均衡

复制全文
下载 pdf
获取客户端源IP地址
四层监听器获取客户端源IP
复制全文
下载 pdf
四层监听器获取客户端源IP
本文将介绍四层监听器如何通过Proxy Protocol协议获取访问负载均衡服务的客户端源IP地址。​
背景​
  • CLB将访问请求转发至后端服务器时,以下场景访问请求的源地址(即客户端地址)不会被替换,您可以登录后端服务器,执行 cat /var/log/nginx/access.log命令,查看访问日志,获取客户端的源IP地址。​
  • ​
    访问请求​
    后端服务器​
    服务器组类型​
    源地址是否被替换​
    是否需要Proxy Protocol协议​
    IPv4​
    IPv4​
    服务器类型​
    否​
    否​
    IPv6​
    IPv6​
    服务器类型​
    否​
    否​
    ​
  • 在CLB将访问请求转发至后端服务器的过程中,以下场景访问请求的源地址(即客户端地址)会被替换,若后端服务器需要获取客户端真实的IP地址,就需要使用Proxy Protocol协议。​
  • ​
    访问请求​
    后端服务器​
    服务器组类型​
    源地址是否被替换​
    是否需要Proxy Protocol协议​
    IPv4​
    IPv6​
    服务器类型​
    是​
    是​
    IPv6​
    IPv4​
    服务器类型​
    是​
    是​
    IPv4​
    IPv4​
    IP类型​
    是​
    是​
    IPv6​
    IPv4​
    IP类型​
    是​
    是​
    ​
说明​
  • 仅四层(TCP、UDP)监听器支持Proxy Protocol协议。​
  • 如果四层监听器接入了Web应用防火墙(Web Application Firewall,简称 WAF),客户端请求通过WAF时,WAF会对客户端IP地址进行转换,从而导致后端服务器无法直接获取客户端的源IP地址。​
此时,您可以参考通过负载均衡(CLB)4 层监听器接入云WAF实例配置HTTP Header字段,使WAF携带客户端源IP传递给后端服务器。​
工作原理​
CLB与后端服务器使用Proxy Protocol的过程如下:​
  1. 客户端访问请求至CLB。​
  1. CLB与后端服务器建立连接。​
  1. CLB向后端服务器发送一个包含客户端的IP地址、端口号的Proxy Protocol报文。​
  1. 后端服务器接收并解析Proxy Protocol报文,获取客户端的客户端的IP地址、端口号。​
  1. CLB向后端服务器发客户端访问请求。​
  1. 后端服务器处理客户端请求。​
准备工作​
  • 请确保您已完成CLB的基本配置,详细操作请参见CLB快速入门。​
  • 启用Proxy Protocol协议功能前,请确保后端服务器部署的服务支持Proxy Protocol v2协议。​
nginx 1.13.11及以上版本支持Proxy Protocol v2协议,本文以Nginx1.20.1为例进行介绍。​
操作步骤​
步骤一:启用Proxy Protocol协议​
  1. 登录CLB控制台。​
  1. 单击目标CLB实例的名称,进入实例详情页面。​
  1. 选择监听器页签,单击目标监听器右侧的编辑监听器按钮,开启Proxy Protocol协议的开关。​
  1. 连续三次单击下一步按钮,然后单击确定按钮,完成操作。​
步骤二:启用后端服务的Proxy Protocol​
  1. 登录后端服务器,具体操作请参见登录Linux实例或登录Windows实例。​
  1. 执行以下命令,打开Nginx配置文件nginx.conf。​
  • vi /etc/nginx/nginx.conf​
  1. 按i进入编辑模式,根据以下内容配置Proxy Protocol v2协议获取客户端源地址的功能。​
  • ​
    http {​
    # $proxy_protocol_addr 用于记录客户端真实IP​
    # $remote_addr 用于记录CLB实例的Local 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;​
    #...​
    }​
    }​
    ​
  1. 按 Esc键退出编辑模式,然后输入:wq保存退出。​
  1. 执行以下命令,使配置生效。​
  • sudo nginx -s reload​
步骤三:验证流量​
  1. 打开本地电脑浏览器。​
  1. 输入http://您的自有域名,显示后端服务器部署的应用页面,则说明Proxy Protocol协议配置完成。​
步骤四:获取客户端源IP地址​
  1. 登录后端服务器,具体操作请参见登录Linux实例或登录Windows实例。​
  1. 执行 cat /var/log/nginx/access.log命令,查看访问日志,可以获取客户端的源IP地址。​
  • 携带IPv4客户端源IP地址的Proxy Protocol v2协议的报文头格式如下所示:​
  • ​
    /*​
    * Proxy Protocol Header:​
    * NAT44 Header​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | |​
    * | Signature |​
    * | |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | Ver | Cmd | Af | Proto | Length |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | IPv4 Source Address |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | IPv4 Destination Address |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | Source Port | Destination Port |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    */​
    ​
  • 携带IPv6客户端源IP地址的Proxy Protocol v2协议的报文头格式如下所示:​
  • ​
    /*​
    * Proxy Protocol Header:​
    * NAT66 Header​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | |​
    * | Signature |​
    * | |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | Ver | Cmd | Af | Proto | Length |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | |​
    * | |​
    * | IPv6 Source Address |​
    * | |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | |​
    * | |​
    * | IPv6 Destination Address |​
    * | |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    * | Source Port | Destination Port |​
    * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+​
    */​
    ​
最近更新时间:2026.08.06 14:30:31
这个页面对您有帮助吗?
有用
有用
无用
无用