🌩️ 当域名遇上家里的电脑:一条隧道通向世界
✨ “如果代码能飞翔,那我的内网也该走出卧室。”
—— 一个厌倦了光猫折腾的开发者的心声
1️⃣ 为什么我的电脑像隐士? 🏔️
我们都有一台电脑,可能跑着博客、NAS、Docker 一堆服务,心里想着:
“这玩意儿要是能随时随地访问,不就完美了吗?”
现实却啪啪打脸:
- 🚫 没有公网 IP,运营商说“要加钱”。
- 🔒 光猫 NAT,配置像解数学奥赛题。
- 💔 证书更新比恋爱还麻烦,还老掉链子。
你的电脑就像一个被困在深山的隐士,高冷、强大,但没人能找到。
2️⃣ 让隐士出山的几条路 🛤️
出山之路 | 类比 | ✅ 优点 | ❌ 缺点 |
---|---|---|---|
DDNS + 端口映射 | 砸门牌号、通宵排队 🏠 | 免费直连 | 要公网,还得拜访光猫大爷 🧓 |
frp/ngrok | 自建驿站 🏯 | 灵活、强大 | VPS、配置、维护全包 📦 |
ZeroTier/Tailscale | 小圈子微信群 👥 | 内部沟通低延迟 | 分享给外人时一脸懵 😅 |
Cloudflare Tunnel | 全球顺丰快递柜 📬 | 免公网、免折腾、自动 HTTPS | 流量经人家,隐私要信任 Cloudflare 👀 |
一句话:别人还在路由器菜单里跳大神,你已经轻描淡写:
cloudflared tunnel run my-mac
3️⃣ 为什么选择 Cloudflare Tunnel? 🚀
因为它让服务器“出山”这件事,不再像修仙,而是像点个外卖:
- 🙅 免公网 IP → 不求人
- 🛠️ 免端口映射 → 不折腾
- 🔒 自动 HTTPS → 不掉链子
- 🌐 全球节点加速 → 访问比送外卖还快
- 🛡️ Zero Trust → 还能假装是大厂 SSO
⚠️ 特别注意:域名必须托管在 Cloudflare 上,才能使用 Cloudflare Tunnel 绑定子域名。如果你的域名还在其他 DNS 服务商,记得先迁移到 CF,再进行隧道配置。
形象点说:你家机房门口多了一个 Cloudflare 专属快递柜 📦,世界的请求先放进去,你的 CentOS 自己取。你只要偶尔清理一下柜子,不用天天搬门口的大石头。
4️⃣ 安装步骤(macOS + Nginx@80) 💻
💡 tips:Linux / CentOS 同理,这里 macOS 只是演示
💡 Centos版本连接:juejin.cn/spost/75510…
4.1 安装 cloudflared ⚙️
brew install cloudflared
4.2 登录 Cloudflare 🔑
cloudflared tunnel login
选择你的主域名 yiqiquhuxi.cn
。
4.3 创建隧道 🌉
cloudflared tunnel create my-mac
- 会生成一个 UUID(类似
3a0f23c2-xxxx-xxxx-xxxx-8af5d3d6d123
)。 - 在
~/.cloudflared/
下会生成UUID.json
。 - 👉 记住这个 UUID,后面配置文件要用!
4.4 写配置文件 📝(重点:替换 UUID)
确认 UUID 和文件名:
cloudflared tunnel list
ls ~/.cloudflared
编辑 config.yml
(/Users/neo/.cloudflared/config.yml):
tunnel: YOUR-UUID # 替换为实际 UUID
credentials-file: /Users/neo/.cloudflared/YOUR-UUID.json # 替换为实际 文件路径和 UUID
ingress:
- hostname: mac.yiqiquhuxi.cn
service: http://localhost:80
- service: http_status:404
⚠️ 注意:UUID 和 JSON 文件名必须一致!
4.5 绑定域名 🌍
cloudflared tunnel route dns my-mac mac.yiqiquhuxi.cn
4.6 启动测试 🧪
cloudflared tunnel run my-mac
👉 打开 https://mac.yiqiquhuxi.cn
,应该能看到本地 Nginx 主页。
4.7 后台常驻 🛎️
brew services start cloudflared
5️⃣ 一隧道,多服务(多域名 / 多端口) - (可选配置) 🧩
5.1 标准三步 ✅
- 绑定新域名到隧道
cloudflared tunnel route dns my-mac api.yiqiquhuxi.cn
cloudflared tunnel route dns my-mac blog.yiqiquhuxi.cn
- 在 config.yml 添加 ingress 规则
ingress:
- hostname: mac.yiqiquhuxi.cn
service: http://localhost:80
- hostname: api.yiqiquhuxi.cn
service: http://localhost:8080
- hostname: blog.yiqiquhuxi.cn
service: http://localhost:3000
- service: http_status:404
- 重启服务
brew services restart cloudflared
5.2 单域名 → 路径分发(交给 Nginx)
/api
→ 8080/blog
→ 3000
👉 Tunnel 负责“送人进门”,Nginx 负责“谁住哪间房”。
6️⃣ 常见坑点 🕳️
报错 | 原因 | 解决 |
---|---|---|
credentials file doesn't exist | JSON 文件路径写错 / UUID 不一致 | ls ~/.cloudflared 确认文件名 |
404 Not Found | ingress 规则没写对 | 确认域名和 Cloudflare DNS 一致 |
502 Bad Gateway | Nginx 没跑起来 | brew services start nginx |
7️⃣ 工作原理小剧场 🎭
很多人会问:Cloudflare Tunnel 和内网穿透是不是一样?
答案:✅ 是的,本质就是“托管版内网穿透”。
- 你的 Mac 上的
cloudflared
客户端会主动连出去 → 建立加密隧道。 - 外部访问
mac.yiqiquhuxi.cn
→ 先到 Cloudflare 边缘节点,再转进隧道。 - 因为是 你主动连出去,NAT、防火墙都拦不住。
类比一下:
- frp:你租了个快递柜,还要自己招人用。
- Cloudflare Tunnel:Cloudflare 给你免费柜子,还配了全球分店和免费保安 👮。
8️⃣ 🎤 结语
过去要让域名访问家里的电脑,你得和运营商/路由器斗智斗勇 ⚔️。
现在?只要 Cloudflare Tunnel 一开,你的域名就能优雅直通家里的 Nginx。
下次别人问:
“你怎么让外网访问到家里电脑的?”
你就淡定一笑:
“我有 Cloudflare 给的专属快递柜,一次能收好多快递!” 😎📦✨