🌩️ 当域名遇上家里的电脑:一条隧道通向世界 - MacOS版本

31 阅读4分钟

🌩️ 当域名遇上家里的电脑:一条隧道通向世界

✨ “如果代码能飞翔,那我的内网也该走出卧室。”
—— 一个厌倦了光猫折腾的开发者的心声


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 标准三步 ✅

  1. 绑定新域名到隧道
cloudflared tunnel route dns my-mac api.yiqiquhuxi.cn
cloudflared tunnel route dns my-mac blog.yiqiquhuxi.cn
  1. 在 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
  1. 重启服务
brew services restart cloudflared

5.2 单域名 → 路径分发(交给 Nginx)

  • /api → 8080
  • /blog → 3000

👉 Tunnel 负责“送人进门”,Nginx 负责“谁住哪间房”。


6️⃣ 常见坑点 🕳️

报错原因解决
credentials file doesn't existJSON 文件路径写错 / UUID 不一致ls ~/.cloudflared 确认文件名
404 Not Foundingress 规则没写对确认域名和 Cloudflare DNS 一致
502 Bad GatewayNginx 没跑起来brew services start nginx

7️⃣ 工作原理小剧场 🎭

很多人会问:Cloudflare Tunnel 和内网穿透是不是一样?
答案:✅ 是的,本质就是“托管版内网穿透”。

  • 你的 Mac 上的 cloudflared 客户端会主动连出去 → 建立加密隧道。
  • 外部访问 mac.yiqiquhuxi.cn → 先到 Cloudflare 边缘节点,再转进隧道。
  • 因为是 你主动连出去,NAT、防火墙都拦不住。

类比一下:

  • frp:你租了个快递柜,还要自己招人用。
  • Cloudflare Tunnel:Cloudflare 给你免费柜子,还配了全球分店和免费保安 👮。

8️⃣ 🎤 结语

过去要让域名访问家里的电脑,你得和运营商/路由器斗智斗勇 ⚔️。
现在?只要 Cloudflare Tunnel 一开,你的域名就能优雅直通家里的 Nginx

下次别人问:
“你怎么让外网访问到家里电脑的?”
你就淡定一笑:
“我有 Cloudflare 给的专属快递柜,一次能收好多快递!” 😎📦✨