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

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

"如果代码能飞翔,那我的内网也该走出卧室。"

------ 一个厌倦了光猫折腾的开发者的心声


1️⃣ 为什么我的电脑像隐士?

我们都有一台电脑,可能跑着博客、NAS、Docker 一堆服务,心里想着:

"这玩意儿要是能随时随地访问,不就完美了吗?"

现实却啪啪打脸:

  • 没有公网 IP,运营商说"要加钱"。
  • 光猫 NAT,配置像解数学奥赛题。
  • 证书更新比恋爱还麻烦,还老掉链子。

你的电脑就像一个被困在深山的隐士,高冷、强大,但没人能找到。


2️⃣ 让隐士出山的几条路

出山之路 类比 优点 缺点
DDNS + 端口映射 砸门牌号、通宵排队 免费直连 要公网,还得拜访光猫大爷
frp/ngrok 自建驿站 灵活、强大 VPS、配置、维护都要全包
ZeroTier/Tailscale 小圈子微信群 内部沟通低延迟 分享给外人时一脸懵
Cloudflare Tunnel 全球顺丰快递柜 免公网、免折腾、自动 HTTPS 流量经人家,隐私要信任 Cloudflare

一句话:别人还在路由器菜单里跳大神,你已经轻描淡写:

arduino 复制代码
cloudflared tunnel run my-mac

3️⃣ 为什么选择 Cloudflare Tunnel?

因为它让电脑"出山"这件事,不再像修仙,而是像点个外卖:

  • 免公网 IP → 不求人
  • 免端口映射 → 不折腾
  • 自动 HTTPS → 不掉链子
  • 全球节点加速 → 访问比送外卖还快
  • Zero Trust → 还能假装是大厂 SSO

形象点说:你家门口多了一个 Cloudflare 专属快递柜,世界的请求先放进去,你的 Mac 自己取。你只要偶尔清理一下柜子,不用天天搬门口的大石头。


4️⃣ 安装步骤(macOS + Nginx@80)

4.1 安装 cloudflared

复制代码
brew install cloudflared

4.2 登录 Cloudflare

复制代码
cloudflared tunnel login

选择你的主域名 yiqiquhuxi.cn。

4.3 创建隧道

lua 复制代码
cloudflared tunnel create my-mac
  • 会生成一个 UUID (类似 3a0f23c2-xxxx-xxxx-xxxx-8af5d3d6d123)。
  • 在 ~/.cloudflared/ 下会生成 UUID.json。
  • 👉 记住这个 UUID,后面配置文件要用!

4.4 写配置文件(重点:替换 UUID)

先确认 UUID 和文件名:

bash 复制代码
cloudflared tunnel list    # 查看隧道 ID(UUID)
ls ~/.cloudflared          # 确认有 UUID.json

然后编辑 ~/.cloudflared/config.yml:

yaml 复制代码
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

⚠️ 注意:

  • 两处的 YOUR-UUID 必须和 UUID.json 一致。
  • 常见报错 credentials file doesn't exist,十有八九是因为这里没替换对。

4.5 绑定域名(首次绑定)

perl 复制代码
cloudflared tunnel route dns my-mac mac.yiqiquhuxi.cn

👉 Cloudflare 会自动创建一条 CNAME 解析。

4.6 启动测试

arduino 复制代码
cloudflared tunnel run my-mac

访问 👉 https://mac.yiqiquhuxi.cn,看到你的本地 Nginx 主页。

4.7 后台常驻

sql 复制代码
brew services start cloudflared

5️⃣ 一隧道,多服务(多域名 / 多端口)

5.1 标准三步(每新增一个服务/端口/域名都按这个顺序)

  1. 绑定新域名到隧道(每个新子域名只需一次)
perl 复制代码
cloudflared tunnel route dns my-mac api.yiqiquhuxi.cn
cloudflared tunnel route dns my-mac blog.yiqiquhuxi.cn
  1. 在 config.yml 里添加 ingress 规则(把域名映射到本地端口)
yaml 复制代码
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. 重启隧道服务,让新规则生效
perl 复制代码
brew services restart cloudflared   # 如果是后台常驻
# 或者:
pkill cloudflared && cloudflared tunnel run my-mac

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

只用一个域名也行,把分流交给 Nginx:

  • / → 首页服务(80)
  • /api → 本地 8080
  • /blog → 本地 3000

Tunnel 负责"把流量打进家门",Nginx 负责"安排进哪个房间"。

5.3 江湖恶搞版流程图

css 复制代码
       🌍 世界各地的请求
                  │
                  ▼
      [ Cloudflare 快递柜 ]
                  │
         ┌────────┴────────┐
         ▼                 ▼
   [Nginx 门口保安]     (404黑名单)
         │
 ┌───────┼─────────────┐
 ▼       ▼             ▼
[Hexo 小房间] [Spring Boot 书院] [Node.js 茶馆]

6️⃣ 常见坑点

报错 原因 解决
credentials file doesn't exist JSON 文件路径写错 / UUID 不一致 ls ~/.cloudflared 确认 UUID.json
404 Not Found ingress 规则没写对 确认 hostname 和 Cloudflare DNS 一致
502 Bad Gateway Nginx 没跑起来 brew services start nginx 检查服务

7️⃣ 工作原理小剧场

很多人会问:Cloudflare Tunnel 到底是怎么做到"外网直接访问内网"的?

简单说,它和我们平时说的 内网穿透(frp、ngrok 之类)一个道理:

  • 你的 Mac 上跑的 cloudflared 客户端,会主动向 Cloudflare 建立一条加密隧道(相当于你跑去快递柜,把柜门钥匙插好,随时待命)。
  • 当外部有人访问 mac.yiqiquhuxi.cn 时,请求先到 Cloudflare 边缘节点(全球的中继点),再顺着隧道转发进来。
  • 因为是你主动连出去的,不需要公网 IP,不用开路由器端口,NAT 和防火墙都拦不住。

类比一下:

  • frp → 你租了个快递柜,自己贴小广告让别人来存取快递。
  • Cloudflare Tunnel → Cloudflare 给你免费快递柜,顺带还提供全球连锁网点 + 免费保安(证书、DDoS 防御)。

所以,Cloudflare Tunnel 本质上就是 "官方托管的内网穿透 + CDN 加速" 。

缺点是------流量必须经过 Cloudflare,你得信任它不会偷看快递。


8️⃣ 🎤 结语

过去要让域名访问家里的电脑,必须和运营商/路由器斗智斗勇;现在?只要 Cloudflare Tunnel 一开,你的域名就能优雅直通家里的 Nginx,而且一条隧道就能服务全家。

下次别人问你:

"你怎么让外网访问到家里电脑的?"

你就笑一笑:
"我有 Cloudflare 给的专属快递柜,一次能收好多快递!" 😎

相关推荐
孟健几秒前
LLM API 安全防线:从 OpenCode 盗刷事件到 LiteLLM 多模型容灾实操
人工智能·后端·架构
程序员cxuan17 分钟前
我用 WorkBuddy + ima 把公众号文章做成了知识库。
人工智能·后端·程序员
程序员cxuan1 小时前
玩了一天 REA,我号快没了
人工智能·后端·程序员
卷无止境1 小时前
暗流与破局:AI时代的代码安全审查工具全景指南
后端·python
smallyoung1 小时前
告别N+1:Spring Boot 一键数据翻译框架体系
java·后端·架构
程序猿DD1 小时前
OctaFuse Gateway 2.16.0:新增 ElevenLabs 的支持、厂商原生端点重构、后台管理优化
后端
掘金者阿豪1 小时前
列存储适不适合订单报表?从一条慢 SQL 聊聊金仓 KES 的使用边界
后端
武子康2 小时前
150毫秒和2400毫秒:同一 Agent 任务的两种延迟
人工智能·后端·agent
海边捡石子2 小时前
FreeSWITCH 入门:把电话系统接入语音客服机器人
人工智能·后端
武子康3 小时前
Agent 偏好记忆怎样确认写入:范围、版本与撤销的一个最小例
人工智能·后端·agent