可以,但取决于你的使用场景。
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 界面管理即可:
- 为 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。
- 为 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)
如果你习惯通过命令行管理:
- 在 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
- 在 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 承载的所有二级域名。