You need to enable JavaScript to run this app.
智能全球加速

智能全球加速

复制全文
回源管理
保持客户端源IP
复制全文
保持客户端源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
这个页面对您有帮助吗?
有用
有用
无用
无用