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

负载均衡

复制全文
下载 pdf
最佳实践
获取客户端源IP
复制全文
下载 pdf
获取客户端源IP
背景​
  • NLB将访问请求转发至后端服务器时,以下场景访问请求的源地址(即客户端地址)不会被替换,您可以登录后端服务器,执行 cat /var/log/nginx/access.log命令,查看访问日志,获取客户端的源IP地址。​
  • ​
    访问请求​
    后端服务器​
    服务器组类型​
    是否开启客户端地址保持​
    源地址是否被替换​
    是否需要Proxy Protocol协议​
    IPv4​
    IPv4​
    服务器类型​
    是​
    否​
    否​
    IPv6​
    IPv6​
    服务器类型​
    是​
    否​
    否​
    ​
  • 在NLB将访问请求转发至后端服务器的过程中,以下场景访问请求的源地址(即客户端地址)会被替换,若后端服务器需要获取客户端真实的IP地址,就需要使用Proxy Protocol协议。​
  • ​
    访问请求​
    后端服务器​
    服务器组类型​
    是否开启客户端地址保持​
    源地址是否被替换​
    是否需要Proxy Protocol协议​
    IPv4​
    IPv4​
    服务器类型​
    否​
    是​
    是​
    IPv6​
    IPv6​
    服务器类型​
    否​
    是​
    是​
    IPv4​
    IPv6​
    服务器类型​
    是​
    是​
    是​
    IPv6​
    IPv4​
    服务器类型​
    是​
    是​
    是​
    IPv4​
    IPv6​
    服务器类型​
    否​
    是​
    是​
    IPv6​
    IPv4​
    服务器类型​
    否​
    是​
    是​
    IPv4​
    IPv4​
    IP类型​
    不支持此功能​
    是​
    是​
    IPv6​
    IPv4​
    IP类型​
    不支持此功能​
    是​
    是​
    ​
工作原理​
NLB与后端服务器使用Proxy Protocol的过程如下:​
  1. 客户端访问请求至NLB。​
  1. NLB与后端服务器建立连接。​
  1. NLB向后端服务器发送一个包含客户端的IP地址、端口号的Proxy Protocol报文。​
  1. 后端服务器接收并解析Proxy Protocol报文,获取客户端的IP地址、端口号。​
  1. NLB向后端服务器发客户端访问请求。​
  1. 后端服务器处理客户端请求。​
准备工作​
  • 启用Proxy Protocol协议功能前,请确保后端服务器部署的服务支持Proxy Protocol v2协议。​
nginx 1.13.11及以上版本支持Proxy Protocol v2协议,本文以Nginx1.20.1为例进行介绍。​
操作步骤​
步骤一:启用Proxy Protocol协议​
  1. 在顶部导航栏,选择目标项目和地域。​
  1. 单击目标服务器组右侧的编辑基本信息按钮。​
  1. 勾选开启Proxy-Protocol协议,单击确定按钮,完成操作。​
步骤二:启用后端服务的Proxy Protocol​
  1. 登录后端服务器,具体操作请参见登录Linux实例。​
  1. 执行以下命令,打开Nginx配置文件nginx.conf。​
  • vi /etc/nginx/nginx.conf​
  1. 按i进入编辑模式,根据以下内容修改Proxy Protocol的配置。​
  • ​
    http {​
    # $proxy_protocol_addr 用于记录客户端真实IP​
    # $remote_addr 用于记录NLB实例的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. 输入https://您的自有域名,显示后端服务器部署的应用页面,则说明Proxy Protocol协议配置完成。​
步骤四:获取客户端源IP地址​
  1. 登录后端服务器,具体操作请参见登录Linux实例。​
  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 16:54:00
这个页面对您有帮助吗?
有用
有用
无用
无用