You need to enable JavaScript to run this app.
导航
保持客户端源 IP
最近更新时间:2025.05.13 10:11:01首次发布时间:2022.05.27 19:16:03
我的收藏
有用
有用
无用
无用

保持客户端源 IP 概览

作为一个网络加速服务,全球加速充当了客户端和您的应用程序之间的四层代理。默认情况下,您的应用程序接收到的源 IP 地址是位于终端节点区域的边缘节点的 IP 地址,而非原始客户端的 IP。

然而,许多应用程序的运行依赖真实的客户端 IP。例如,基于 IP 的访问控制、限流、流量分析。诸如火山引擎内容分发网络这类七层反向代理可以使用如 X-Forwarded-For 之类的 HTTP 请求头来传递客户端真实 IP,但这些技术在四层代理中并无法实现。

为满足这一需求,全球加速支持使用 Proxy Protocol 保留客户端源 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 头部的需要占用 28~52 字节的 Payload 用作协议头部,您需要将客户端发送的 UDP 报文 Payload 的数据量控制在更小的值。

开启保持客户端源 IP

您可以通过编辑终端节点组来设置 保持客户端源 IP 属性。具体步骤如下:

  1. 登录火山引擎全球加速控制台

  2. 在左侧导航栏,点击 加速器管理 > 标准型加速器

  3. 标准型加速器 页面,点击需要配置的加速器的名称。

  4. 点击 监听,进入 监听 页面后,选择需要配置的监听器。

  5. 终端节点组 标签页,找到需要配置的终端节点组,在 操作 栏点击 编辑

  6. 编辑终端节点组 标签页,开启 保持客户端源 IP,根据您的后端应用对 Proxy Protocol 的支持情况以及您的监听协议,选择 Proxy Protocol 协议版本,然后点击 确认

开启后端应用对 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。
        #...
    }
}

查看客户端源 IP

您可在 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';
}
  1. 通过tail -n 5 <日志路径> 命令查看日志信息,日志中每条访问记录的第一个 IP 地址即为客户端源 IP。