可以,但取决于你的使用场景。

1. 不同 VPS 能否使用同一个 Cloudflare Tunnel?

  • 场景一:搞高可用 / 负载均衡(推荐共用)

    如果你的多台 VPS 部署的是完全相同的服务(例如 VPS A 和 VPS B 互为冗余镜像),可以使用同一个 Tunnel Token / ID。Cloudflare 会自动将其识别为同一个 Tunnel 的多个连接节点(Connector),提供高可用(HA)与自动故障转移。

  • 场景二:不同 VPS 运行不同的独立服务(不推荐共用)

    如果 VPS A 跑博客(blog.com),VPS B 跑网盘(pan.com),强烈建议不要共用同一个 Tunnel。

    因为 Cloudflare 默认会将流量随机调度到绑定该 Tunnel 的任意一个 VPS 上。如果请求 blog.com 时流量被发到了 VPS B,而 VPS B 本地并没有监听该端口,就会直接导致 HTTP 502/504 报错。

2. 建议与配置方案:独立 VPS 使用独立 Tunnel ID

针对“不同 VPS 运行不同服务/绑定不同域名”的标准架构,最稳妥的做法是:一台 VPS 对应一个专属 Tunnel ID。

[ 用户请求 ]
    ├── blog.yourdomain.com ──> Cloudflare ──> [ Tunnel A ] ──> VPS A (127.0.0.1:80)
    └── pan.yourdomain.com  ──> Cloudflare ──> [ Tunnel B ] ──> VPS B (127.0.0.1:5244)

方式一:面板操作(Cloudflare Zero Trust 网页后台,推荐)

无需在服务器上手动编写复杂的配置文件,直接在 Web 界面管理即可:

  1. 为 VPS A 建立 Tunnel:
  • 进入 Cloudflare Zero Trust 控制台 -> Networks -> Tunnels。
  • 点击 Create a tunnel,选择 Cloudflared,命名为 VPS-A-Tunnel。
  • 复制对应系统的安装与运行指令(带 Token 的命令),在 VPS A 上粘贴运行。
  • 在 Public Hostname 页签中添加域名(如 blog.yourdomain.com),Service 设置为 http://localhost:80。
  1. 为 VPS B 建立 Tunnel:
  • 同样点击 Create a tunnel,新建一个名为 VPS-B-Tunnel 的独立 Tunnel。
  • 复制该 Tunnel 的安装指令并在 VPS B 上运行。
  • 添加对应域名(如 pan.yourdomain.com 或 app.otherdomain.com),Service 设置为 VPS B 本地的服务端口(如 http://localhost:5244)。

方式二:配置文件/命令行操作(本地 config.yml)

如果你习惯通过命令行管理:

  1. 在 VPS A 上:

Bash

cloudflared tunnel create vps-a-tunnel

获得 Tunnel ID A(如 uuid-vps-a),编写 /etc/cloudflared/config.yml:

YAML

tunnel: uuid-vps-a
credentials-file: /root/.cloudflared/uuid-vps-a.json

ingress:
  - hostname: blog.yourdomain.com
    service: http://localhost:80
  - service: http_status:404

路由域名并启动服务:

Bash

cloudflared tunnel route dns vps-a-tunnel blog.yourdomain.com
cloudflared service install
  1. 在 VPS B 上:

Bash

cloudflared tunnel create vps-b-tunnel

获得 Tunnel ID B(如 uuid-vps-b),编写 /etc/cloudflared/config.yml:

YAML

tunnel: uuid-vps-b
credentials-file: /root/.cloudflared/uuid-vps-b.json

ingress:
  - hostname: pan.yourdomain.com
    service: http://localhost:5244
  - service: http_status:404

路由域名并启动服务:

Bash

cloudflared tunnel route dns vps-b-tunnel pan.yourdomain.com
cloudflared service install

总结建议

  • 同服务跨机器做冗余:使用 1 个 Tunnel Token 分别在多台 VPS 运行 cloudflared run。
  • 异构不同服务:按 VPS 维度划分,1 台 VPS 创建 1 个专属 Tunnel,在 Tunnel 内绑定该 VPS 承载的所有二级域名。