You need to enable JavaScript to run this app.
文档中心
智能全球加速

智能全球加速

复制全文
下载 pdf
回源管理
保持客户端源IP
复制全文
下载 pdf
保持客户端源IP

保持客户端源 IP 概览

智能全球加速充当了客户端和您的应用程序之间的七层、四层、三层代理。默认情况下,您的应用程序接收到的源 IP 地址是位于终端节点区域的边缘节点的 IP 地址,而非原始客户端的 IP。然而,许多应用程序的运行依赖真实的客户端 IP。例如,基于 IP 的访问控制、限流、流量分析。
智能全球加速为七层加速、四层加速提供基于不同技术的保持客户端源IP的实现方式:

加速层级保持客户端源IP方式
七层加速在回源请求中添加 X-Forwarded-ForX-Real-IP 请求头来传递客户端真实 IP。
四层加速利用 Proxy Protocol 在 TCP 及 UDP 数据包的有效载荷(Payload)头部添加 Proxy Protocol 头部,用来传递客户端原始 IP 及端口。

为四层加速保持客户端源IP

对于四层加速的客户端源IP地址保留,智能全球加速支持以下 Proxy Protocol 版本:

  • Proxy Protocol v1:仅支持 TCP。加速器会在 TCP 报文的 Payload 部分的开头添加一个 ASCII 编码的 Proxy Protocol v1 头部,用来传递客户端 IP 及端口。
  • Proxy Protocol v2:支持 TCP 和 UDP。加速器会在 TCP 或 UDP 报文的 Payload 部分的开头添加一个二进制编码的 Proxy Protocol v2 头部,用来传递客户端 IP 及端口。

说明

对于基于 UDP 协议的流量,全球加速允许 UDP 数据报中 Payload 长度上限为 1380 字节。但由于 Proxy Protocol v2 头部需要占用额外的 Payload 字节,IPv4 是 28 字节,IPv6 是 52 字节,您需要将客户端发送的 UDP 数据报中 Payload 的数据量控制在更小的值。

开启保持客户端源 IP

对于四层加速,保持客户端源 IP 的配置位于监听器上。您可以通过配置目标监听器来开启该功能。具体步骤如下:

  1. 登录智能全球加速控制台
  2. 在左侧导航栏,点击 接入管理
  3. 标准型加速器 标签页,点击需要配置的加速器的名称。
  4. 监听 标签页,点击需要配置的监听器的名称。
  5. 开启 保持客户端源 IP,根据您的后端应用对 Proxy Protocol 的支持情况,选择 Proxy Protocol 协议版本,然后点击 确认

示例:为 Nginx 开启 Proxy Protocol 协议支持

您的后端服务器需要支持解析 Proxy Protocol 传递的客户端连接信息,才能获取客户端源 IP 。以 Nginx 为例,配置 Nginx 只需将 proxy_protocol 参数添加到 server 块中的 listen 指令后。

http {
    #...
    server {
        listen 80 proxy_protocol;    #在 80 端口,开启解析proxy protocol。
        #...
    }
}
   
stream {
    #...
    server {
        listen 8080 proxy_protocol;    #在 8080 端口,开启解析proxy protocol。
        #...
    }
}
nginx

您可以配置 Nginx 访问日志,检查客户端原始IP的获取情况。具体步骤如下:

  1. 设置http{}模块和stream{}模块的日志格式,添加保存客户端源 IP 的变量 proxy_protocol_addr,从而将客户端源 IP 信息保存到访问日志中。

    http {
    log_format combined '$proxy_protocol_addr - $remote_user [$time_local] '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent"';
    }
    
    stream {
    log_format basic '$proxy_protocol_addr - [$time_local] '
                     '$protocol $status $bytes_sent $bytes_received '
                     '$session_time';
    }
    nginx
    
  2. 通过tail -n 5 <日志路径> 命令查看日志信息,日志中每条访问记录的第一个 IP 地址即为客户端源 IP。将获取到的 IP 地址和客户端原始的 IP 对比验证服务器是否取到了客户端原始 IP。

最近更新时间:2025.08.21 15:31:37
这个页面对您有帮助吗?
有用
有用
无用
无用