Cloudflare Tunnel 部署全流程适用场景国内服务器 未备案域名想通过域名 HTTPS 访问服务且不想暴露源站 IP。操作之前需准备未备案域名、服务器可海外支付的银行卡Visa、PayPal等用于免费开通 Zero Trust 一、底层逻辑先搞懂原理1.1 Tunnel 是什么Cloudflare Tunnel 在你的服务器和 Cloudflare 边缘节点之间建立一条双向加密隧道。流量路径用户 →https://域名→ Cloudflare 边缘节点 →加密隧道→ 你的服务器localhost:端口1.2 和传统 DNS 解析的区别对比项DNS 解析A 记录Cloudflare Tunnel流量路径用户 → 源站 IP用户 → Cloudflare → 隧道 → 源站源站 IP 暴露❌ 暴露✅ 隐藏国内备案要求✅ 必须备案❌ 可绕过流量不经过运营商检测服务器需开放端口✅ 80/443 需开放❌ 无需开放公网端口1.3 核心组件cloudflared服务器端 ←→ Cloudflare 边缘网络 ↓ localhost:8085你的服务cloudflaredCloudflare 官方命令行工具在服务器上运行负责建立隧道Tunnel一个逻辑通道将域名请求转发到本地服务Public Hostname路由告诉 Cloudflare 哪个域名对应哪个本地端口二、部署步骤操作流程2.1 创建隧道Zero Trust 面板登录 https://dash.cloudflare.com/左侧菜单Zero Trust → Networks → Tunnels在这里有个需要支付 0 刀的步骤忘了截图。下边是订阅后的截图 0刀/月点击创建隧道→ 输入隧道名称如domain→ 点击“创建隧道 / Save tunnel”根据自己的系统选择对应的客户端进行安装、执行命令。不知道安装哪个的或有问题问 AIps我是 Ubuntu 系统按图片操作即可。看是服务器是什么架构uname-m# 如果返回 x86_64说明是 64 位的 x86 架构也就是常说的 AMD64这是绝大多数云服务器如阿里云、腾讯云的默认配置。在之前的安装选项中应该选择 64-bit。# 如果返回 aarch64说明是 64 位的 ARM 架构。这类架构常见于苹果 M 系列芯片的电脑或一些 ARM 云服务器如 AWS 的 Graviton 实例。在安装选项中应该选择 arm64。2.2 服务器端连接隧道图片中的命令。安装后配置密钥服务会自动启动。可用sudosystemctl status cloudflared# 查看服务状态cloudflared--version# 验证是否安装成功 会输出如cloudflared version 2026.6.1 (built 2026-06-18-14:33 UTC)# 如果要删除隧道重新建执行sudocloudflaredserviceuninstall# 删除旧服务# 重新配只执行 Install as service 下的命令即可sudocloudflaredserviceinstalleyJhIjoi...你的token安装配置后这里会显示已连接否则就是没连接成功。就像蓝牙配对一样2.4 配置路由Public Hostname在隧道详情页 → 点击“Add a public hostname”或Routes → 添加路由选择“已发布的应用程序”Public Hostname填写配置字段填写内容子域名你想用的前缀如nas域名你的根域名如xxx.com路径留空匹配所有路径服务 URLhttp://localhost:8085你的服务端口点击添加路由/“Add route”/“Save”配置域名、你的服务添加路由成功后会提示并自动添加dns解析记录**如果没有弹出提示就稍等一两分钟后删除这个隧道重新添加**此时就已经配置好了。浏览器访问https://your-domain.com能正常打开即成功。ps浏览器有缓存如果之前设置过重定向的话仍会跳到公网ip所以要开无痕三、常见踩坑及解决错误原因解决方法Error 1016Origin DNS error路由未配置或 CNAME 记录与路由不匹配检查 Tunnel 中是否添加了 Public Hostname且路径留空访问还是备案拦截页DNS 解析仍指向公网 IP删除 A 记录仅保留 CNAME 走 Tunnelcloudflared服务启动失败Token 过期或隧道被删除重新创建隧道用新 token 执行service install