skip to content
仙人掌主题

家宽无80,443端口建站,利用 CloudFlare 规则去掉端口号

/ 6 min read

前提说明

在某些网络环境下(比如家宽、校园网、或者某些宽带运营商),你可能会遇到这些问题:

  • 服务器部署在家中或办公网络中;
  • 公网 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 经常变化也没关系。你可以使用:

  • Lucky
  • ddns-go
  • 阿里云/腾讯云 DNS API + 脚本定时更新
  • 花生壳客户端(不推荐,只适合其内网穿透)

这些工具可以定期将你的公网 IP 更新到域名解析记录中,确保访问不受 IP 更换影响。


⚠️ 本方案不适用于以下场景:

  • 你的宽带没有公网 IP(比如运营商内网 NAT,移动光宽最常见)
  • 无法设置端口映射(部分运营商光猫锁死)
  • 本地服务只能监听在 localhost 或 Unix socket 上
  • 你想要纯内网服务(建议改用 Tailscale / frp 等内网穿透工具)

第一步:使用 Cloudflare 管理 DNS

✅ 设置 A 记录:用于 DDNS 绑定公网 IP

在 Cloudflare 的 DNS 面板中,首先添加一个 A 记录指向你当前的公网 IP。

类型主机记录(Name)内容(IPv4或IPv6 地址)代理状态
Aorigin2409:xxxx:xxxx:xxxx:xxxx:ff:xxxx:xxxx❌ 仅 DNS(关闭代理)

⚠️ 注意:此记录用于绑定真实公网 IP,务必关闭 Cloudflare 代理(灰色云朵),否则 DDNS 工具会更新失败。

你可以使用 lucky 等工具,每隔几分钟自动将本机的公网 IP 更新到这个 origin 记录中。

第二步:使用Lucky的Web服务反代内网服务

  1. 添加Web服务规则
    • 监听端口任意选择一个高位未占用的端口
    • 开启TLS
  2. 添加子域名规则
    • 服务类型:反向代理
    • 前端地址填写blog.yourdomain.com,用户最终访问的域名
    • 后端地址填写你的内网ip:端口

第三步:添加证书,DNS记录

✅ 添加DNS记录

类型主机记录(Name)内容代理状态
CNAMEblogorigin.yourdomain.com✅ 已代理(开启小黄云)

✅ 在CloudFlare中开启SSL,创建源服务器证书

  1. 选择域名
  2. 点击SSL/TLS,创建证书
  3. 将源证书和密钥保存为pem和key文件,上传至Lucky
  4. 将SSL加密模式改为完全(严格)

✅ 添加Origin Rules规则

  1. 选择主域名
  2. 规则-概述-创建规则-源服务器规则
    • 规则名称任意
    • 字段-主机名
    • 运算符-等于
    • 值-blog.yourdomain.com
    • 目标端口-重写到Lucky中的监听端口
    • 保存

至此,可以直接访问https://blog.yourdomain.com,无需再加端口号