前提说明
在某些网络环境下(比如家宽、校园网、或者某些宽带运营商),你可能会遇到这些问题:
- 服务器部署在家中或办公网络中;
- 公网 IP 是动态的,甚至通过光猫转发;
- 运营商对入站连接的端口 80(HTTP)和 443(HTTPS)进行了封锁,导致你用传统方式搭建的网站无法通过域名访问;
- 即便使用了内网穿透或 DDNS,访问时仍需显式带上端口(例如
https://yourdomain.com:8443),影响体验和兼容性; - 还不想花钱买 VPS,仅靠家用 NAS、小主机,或者树莓派跑服务。
为了解决这个问题,我们可以使用 Cloudflare 的回源(回溯)代理能力,配合其免费的 CDN 功能,将任意本地服务通过域名“无端口”公开出来。最终实现效果是:
✅ 使用 https://yourdomain.com
✅ 无需配置公网 80/443,运营商拦不住
✅ 使用 Cloudflare 提供的免费 HTTPS 证书
✅ 后端任意端口服务(比如 8080、3000、8443 等)都能安全访问
✅ 不依赖 Nginx、OpenResty,适配所有语言和框架
在开始之前,你需要确认自己的环境是否满足以下前提条件:
✅ 你需要具备以下资源:
- 一个可用的域名
可以是从腾讯云、阿里云、Namecheap、Namesilo、花生壳等平台购买的任意域名。建议提前完成实名认证,避免后续备案或解析受限。 - 一个公网 IP(动态或静态都行)
本地设备(如 NAS、小主机、树莓派等)需要能够被公网访问,也就是具备公网 IP。💡 如果不确定是否为公网 IP,可用手机热点访问http://ip.sb后和本机终端运行curl ip.sb的结果对比。 - 你的本地路由器/光猫支持端口映射(端口转发)
因为我们不是用 Zero Trust Tunnel,而是通过 Cloudflare 的 Origin Rules 回源,所以你必须确保公网某个端口(如 8080、8443)映射到你的服务端口上。
🔄 动态公网 IP?可以!配合 DDNS 工具使用
如果你是家宽,IP 经常变化也没关系。你可以使用:
这些工具可以定期将你的公网 IP 更新到域名解析记录中,确保访问不受 IP 更换影响。
⚠️ 本方案不适用于以下场景:
- 你的宽带没有公网 IP(比如运营商内网 NAT,移动光宽最常见)
- 无法设置端口映射(部分运营商光猫锁死)
- 本地服务只能监听在 localhost 或 Unix socket 上
- 你想要纯内网服务(建议改用 Tailscale / frp 等内网穿透工具)
第一步:使用 Cloudflare 管理 DNS
✅ 设置 A 记录:用于 DDNS 绑定公网 IP
在 Cloudflare 的 DNS 面板中,首先添加一个 A 记录指向你当前的公网 IP。
| 类型 | 主机记录(Name) | 内容(IPv4或IPv6 地址) | 代理状态 |
|---|---|---|---|
| A | origin | 2409:xxxx:xxxx:xxxx:xxxx:ff:xxxx:xxxx | ❌ 仅 DNS(关闭代理) |
⚠️ 注意:此记录用于绑定真实公网 IP,务必关闭 Cloudflare 代理(灰色云朵),否则 DDNS 工具会更新失败。
你可以使用 lucky 等工具,每隔几分钟自动将本机的公网 IP 更新到这个 origin 记录中。
第二步:使用Lucky的Web服务反代内网服务
- 添加Web服务规则
- 监听端口任意选择一个高位未占用的端口
- 开启TLS
- 添加子域名规则
- 服务类型:反向代理
- 前端地址填写
blog.yourdomain.com,用户最终访问的域名 - 后端地址填写你的内网ip:端口
第三步:添加证书,DNS记录
✅ 添加DNS记录
| 类型 | 主机记录(Name) | 内容 | 代理状态 |
|---|---|---|---|
| CNAME | blog | origin.yourdomain.com | ✅ 已代理(开启小黄云) |
✅ 在CloudFlare中开启SSL,创建源服务器证书
- 选择域名
- 点击SSL/TLS,创建证书
- 将源证书和密钥保存为pem和key文件,上传至Lucky
- 将SSL加密模式改为完全(严格)
✅ 添加Origin Rules规则
- 选择主域名
- 规则-概述-创建规则-源服务器规则
- 规则名称任意
- 字段-主机名
- 运算符-等于
- 值-
blog.yourdomain.com - 目标端口-重写到Lucky中的监听端口
- 保存
至此,可以直接访问https://blog.yourdomain.com,无需再加端口号