没有公网 IP,也能把本地应用挂到自有域名上:一次 Cloudflare Tunnel 实战

举报
yd_228883889 发表于 2026/10/26 22:52:36 2026/10/26
【摘要】 背景:机器在 NAT 后面,没有固定公网 IP我要发布的是一个跑在本地 3000 端口的简历编辑应用。这台机器没有固定公网 IP,对外走共享代理出口,直连基本被封,传统的“开端口、绑域名”走不通。临时演示可以打洞,正式服务还是建议用有公网 IP 的服务器,这篇只讲演示和个人项目怎么先跑起来。临时隧道先试了,不行最开始试的是临时隧道,原理是出站建一条通道,不用开入站端口。但这条路在这台机器上被...
  1. 背景:机器在 NAT 后面,没有固定公网 IP
    我要发布的是一个跑在本地 3000 端口的简历编辑应用。这台机器没有固定公网 IP,对外走共享代理出口,直连基本被封,传统的“开端口、绑域名”走不通。临时演示可以打洞,正式服务还是建议用有公网 IP 的服务器,这篇只讲演示和个人项目怎么先跑起来。
  2. 临时隧道先试了,不行
    最开始试的是临时隧道,原理是出站建一条通道,不用开入站端口。但这条路在这台机器上被代理拦住了,临时隧道要用的域名返回 403,根本连不上边缘。结论很直接:环境不认临时隧道,就别在这个方向上继续耗时间。
  3. 换成命名隧道,一次配好长期用
    改成命名隧道后就通了。做法是先建一条属于自己的隧道,在自己的域名下加一条 CNAME 指向这条隧道,隧道进程在本地起起来,主动连向云端边缘,外部访问域名时再由边缘转发回本地 3000 端口。注意一点:隧道给的内部地址不能直接当公开地址用,必须配自己的域名才能对外访问。
  4. 两个最花时间的坑
    第一个坑是 DNS。本地沙盒 DNS 对隧道需要的 SRV 记录返回拒绝,对隧道相关域名还会返回假地址,隧道进程解析不到真实边缘。解决办法是在本地起一个 DNS 存根,只把 SRV 和边缘区域记录答成 127.0.0.1,其余正常转发,让隧道进程用一份独立的解析配置。
    第二个坑是代理。隧道进程本身不认代理环境变量,直连又被封。解决办法是在本地起一个边缘转发,隧道进程先连到这个转发,再由转发经出口代理 CONNECT 到真实边缘节点,全程 TLS 端到端,不在中间解密。
  5. 上线后别忽略的两件事
    一是持久化。隧道二进制不要只放在重启会丢的目录,要备份到持久目录;隧道凭证单独存、权限收紧;一次性用过的云服务 API 令牌办完就删,隧道运行不依赖它。服务用 systemd 管起来,并加一个定时自愈检查,机器重建后能自己恢复。
    二是访问体验。站点本身能打开了,但在大陆访问还是慢,原因不在隧道,而在站点太重:首页 JS 有好几 MB,中文字体一百多 MB,叠加跨境线路就更慢。只看简历的话导出 PDF 最省事;要长期给别人用,先做字体子集化和资源瘦身比换隧道更管用。
    结尾
    没有公网 IP 不等于不能对外演示,命名隧道加本地 DNS 和边缘转发这套组合,能把“本地能跑”变成“域名能打开”。但它适合演示和个人项目,正式服务还是要回到有公网 IP、有稳定线路的服务器上。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。