目 录CONTENT

文章目录

Cloudflare Tunnel + SaaS 优选加速完整指南

Administrator
2026-04-21 / 0 评论 / 0 点赞 / 12 阅读 / 0 字

Cloudflare Tunnel + SaaS 优选加速完整指南

📌 背景与目标

通过 Cloudflare Tunnel 将内网服务(如 MiroTalk、HomeAssistant、Nginx 等)暴露到公网时,默认情况下国内访问速度可能不理想。本文介绍一种双域名 + Cloudflare for SaaS 的方案,利用优选 IP 为国内用户提供更快的访问体验。

方案架构

flowchart LR User[用户(国内)] -->|访问| MainDomain[主域名 app.example.com] MainDomain -->|CNAME 指向| PreferEntry[优选入口 cdn.辅助域名] PreferEntry -->|优选 IP 路由| CloudflareEdge[Cloudflare 边缘节点] CloudflareEdge -->|SaaS 回退源| Fallback[辅助域名回退源 meet.辅助域名] Fallback -->|Cloudflare Tunnel| Tunnel[隧道客户端] Tunnel -->|内网 HTTP| InternalService[内网服务 192.168.x.x:3000]

核心思路

域名角色 示例 作用
主域名 app.example.com 用户实际访问的地址
辅助域名 cdn.example.net 提供优选入口 + SaaS 回退源
内网服务 192.168.x.x:3000 实际运行的服务

🛠 准备工作

  • 两个托管在 Cloudflare 的域名(主域名 + 辅助域名)
  • 已安装并运行 cloudflared(Cloudflare Tunnel 客户端)
  • 内网服务已部署且可正常访问
  • Cloudflare 账号已绑定支付方式(Cloudflare for SaaS 功能免费,仅需验证)

🚀 第一步:配置 Cloudflare Tunnel

1.1 创建隧道(如未创建)

  1. 进入 Cloudflare 控制台 → Zero TrustNetworksTunnels
  2. 点击 Create a tunnel,输入名称(如 my-tunnel
  3. 复制显示的安装命令,在运行 cloudflared 的服务器上执行
  4. 确认连接成功后点击 Next

1.2 添加公共主机名

在隧道配置页面的 Public Hostnames 中,依次添加两条记录:

第一条(回退源,用于辅助域名):

字段
Subdomain meet(可自定义)
Domain 辅助域名(如 cdn.example.net
Type HTTP
URL 内网服务地址(如 192.168.1.100:3000

第二条(业务域名,用于主域名):

字段
Subdomain app(可自定义)
Domain 主域名(如 app.example.com
Type HTTP
URL 同上(内网服务地址)

⚠️ 注意:URL 字段不要加 http://https://,只写 IP:端口localhost:端口

添加完成后,Cloudflare 会自动在两个域名的 DNS 中创建对应的 CNAME 记录指向隧道。这些自动生成的记录必须保持代理状态为橙色云朵


🔗 第二步:启用 Cloudflare for SaaS

2.1 进入配置页面

  1. 选择辅助域名(如 cdn.example.net
  2. 点击左侧 SSL/TLS自定义主机名 (Custom Hostnames)
  3. 如未启用,点击 Enable Cloudflare for SaaS 并绑定支付方式(功能免费)

2.2 添加回退源

回退源 (Fallback Origin) 输入框中,填写你在 Tunnel 中为辅助域名配置的完整地址:
meet.cdn.example.net

text

点击 添加回退源,等待状态变为 有效 (Active)

2.3 添加自定义主机名

  1. 点击 添加自定义主机名
  2. 自定义主机名 输入主域名的访问地址:app.example.com
  3. 验证方式选择 TXT
  4. 复制生成的 TXT 记录值
  5. 切换到主域名的 DNS 设置,添加该 TXT 记录
  6. 返回自定义主机名页面刷新,等待状态变为 有效

🌐 第三步:配置优选入口

辅助域名的 DNS 设置中,添加一条记录用于优选:

类型 名称 目标 代理状态
CNAME cdn(可自定义) 优选域名(如 cf.090227.xyz ⚪ 灰色(仅 DNS)

也可以使用自己测出的优选 IP,此时类型选择 A,目标填 IP 地址。

保存后,你就有了一个优选入口 cdn.cdn.example.net


🔀 第四步:修改主域名解析

关键步骤:将主域名的访问地址指向优选入口。

  1. 进入主域名的 DNS 设置
  2. 找到 Tunnel 自动创建的 app 那条 CNAME 记录(指向 xxx.cfargotunnel.com)—— 直接删除它
  3. 重新添加一条 CNAME 记录
类型 名称 目标 代理状态
CNAME app cdn.cdn.example.net(优选入口) ⚪ 灰色(仅 DNS)

⚠️ 主域名的 DNS 中不应有任何直接指向隧道地址的记录。


✅ 第五步:最终检查清单

检查项 预期状态
Tunnel 中两条 Public Hostname 辅助域名 + 主域名,URL 均为内网服务地址
辅助域名 DNS:meet 记录 CNAME 指向 xxx.cfargotunnel.com,🟠 橙色云朵
辅助域名 DNS:cdn 记录 CNAME 指向优选域名,⚪灰色云朵
主域名 DNS:app 记录 CNAME 指向 cdn.辅助域名,⚪ 灰色云朵
自定义主机名:回退源 状态有效
自定义主机名:自定义主机名 状态有效
SSL/TLS 加密模式 完全 (Full)完全(严格)
始终使用 HTTPS 开启
自动 HTTPS 重写 开启

🧪 验证与测试

测试回退源

直接访问 https://meet.辅助域名,应能正常打开服务。

测试主域名

访问 https://app.主域名,应能正常打开服务,且国内访问速度更快。

DNS 解析检查

# 检查主域名解析
dig app.主域名
# 预期:返回 CNAME 指向优选入口

# 检查优选入口解析
dig cdn.辅助域名
# 预期:返回优选域名或优选 IP

⚠️ 常见问题

  1. 访问出现 ERR_TOO_MANY_REDIRECTS
  • 原因:SSL/TLS 加密模式设置为 灵活 (Flexible),与源服务器强制 HTTPS 冲突。
  • 解决:将加密模式改为 完全 (Full) 或 完全(严格),并确保 Tunnel 配置中使用 HTTP 协议。
  1. 出现 502 错误
  • 可能原因:
    • Tunnel 未运行
    • 内网服务未启动
    • Public Hostname 中的 URL 配置错误
    • 自定义主机名状态不是 有效
  • 排查:先访问回退源 https://meet.辅助域名 确认服务正常。
  1. 证书未被覆盖
  • 原因:自定义主机名未生效或 TXT 验证未完成。
  • 解决:检查自定义主机名状态,重新验证 TXT 记录。
  1. 优选 IP 失效
  • 原因:优选 IP 或优选域名会随时间变化。
  • 解决:定期更新 cdn 记录的优选域名或 IP,可以使用 CloudflareSpeedTest 等工具测速后自动更新。

📚 参考与致谢

0

评论区