解决家宽 443/80 等常用端口被禁用的问题
一. 前言
众所周知,所有网络服务在运行时都需要监听端口号,例如通过 http(s)://地址:端口 的格式可以用来访问某个网站。如果这个网站使用的是 80 / 443 这样的默认端口,在访问时还可以省略端口号,比如百度 https://www.baidu.com 的地址实际上是 https://www.baidu.com:443,省略掉端口号可以让网址更加直观,还能方便记忆。
但在国内由于运营商的各种限制,就算申请到公网 IP 也会发现 80/8080/443 等常用端口被禁用。如果想要开通必须给网站备案,然后向运营商提交申请。而很多人发现申请解除了限制过段时间也有可能又被莫名其妙关掉,非常麻烦。
二. 解决方案
在这种情况下想要访问自建的网站会增加一些麻烦,实际上能使用的方式其实有很多,而且各有优劣。
| 方案 / 效果 | 操作难度 | 隐藏端口 | 访问速度 | 实现成本 | 
|---|---|---|---|---|
| 更换端口 | ⭐️ | 否 | 快 | 低 | 
| 隐/显性 URL 记录 | ⭐️⭐️ | 是 | 快 | 低 | 
| Cloudflare 代理 | ⭐️⭐️⭐️ | 是 | 慢 | 低 | 
| NPS / FRP 内网穿透 | ⭐️⭐️⭐️⭐️⭐️ | 是 | 快 | 高 | 
1. 更换端口
这个方案其实是最简单,也最没有技术含量的一种方法了。换一个端口号不会影响添加证书使用SSL,缺点就是没办法隐藏端口号。
2. 隐/显性 URL 记录
这个需要配置两条域名解析才可以达到效果,例如您的域名是 example.com,网站监听在 12345 端口,最终想要用 redir.example.com 访问网站:
- 主机名 
a→ 记录类型A/AAA→ 记录值IP地址 - 主机名 
redir→ 记录类型隐/显性 URL 记录→ 记录值http(s)://a.example.com:12345 
在只配置了第一条的情况下,访问网站的地址是 http(s)://example.com:12345。但在配置了第二条之后,就可以使用 redir.example.com 访问网站了。
但这种方式有致命的缺点,您会发现用配置 隐性URL记录 的域名访问网站,无论在如何切换页面 URL 都是 redir.example.com ,地址栏不会发生任何变化,也就意味着不能复制定位到指定页面的 URL 路径。如果用配置 显性 URL 记录 的域名访问网站,地址栏会立即跳转到 http(s)://a.example.com:12345,根本达不到隐藏端口号的目的。
这是因为 隐性 URL 记录 是将网站内容直接展示在当前页面下,就像是嵌套了个网页,无论怎么切换页面地址栏的 URL 都不会发生变化。而 显性 URL 记录 是直接将页面重定向了记录值,会把真实的域名和端口暴露出来。
如果您的网站只有单个页面,不在乎 URL 地址是否变化,配置 隐性URL记录 来达到效果会更合适。
需要注意的是不同的域名注册商记录类型名称会有差异,已知阿里和腾讯的域名解析支持配置
隐/显性 URL 记录。
3. Cloudflare 代理
关于赛博活佛的事迹大家可能已经听过不少了,使用 Cloudflare 解析域名可以使用免费的代理功能,访问网站会通过代理服务器中转请求,能达到隐藏网站的真实 IP 的效果,而且还提供免费的 SSL 证书和 DDOS 攻击防御。
Cloudflare 代理在开启状态下,会先通过 443 端口强制 SSL 连接中转服务器,再由中转服务器通过 80/443 端口连接至网站。由于网站的 80/443 端口不通,因此需要额外的配置修改代理服务器连接网站使用的端口。
切换加密模式
点击菜单 SSL/TLS → 概述 → 配置,切换加密模式到 完全(严格)。

获取边缘证书
切换加密模式后,代理服务器与我们的网站之间也需要使用 SSL 加密,因此需要下载边缘证书并配置到网站。点击菜单 SSL/TLS → 边缘证书 获取和下载,该证书是通配符证书,到期后会自动续订,无需定期更新。

创建规则
点击菜单 规则 → Orign Rules → 创建规则,网站的端口以 123456 为例。字段选择 SSL/HTTPS,重写到 123456。

在像实例图片这样配置后,访问 https://test.myhs.cc 就相当于访问的是 http://123.123.123.123:12345,而且还是 SSL 加密连接。
如果只需要对某个特定的域名解析生效,还可以点击图中的
And按钮添加主机名规则。
该方法唯一的缺点就是代理服务器都在国外,访问速度很慢。如果想加速自己电脑的访问速度,可以通过 测试工具 获取访问速度最快的代理服务器 IP 并修改 Hosts 文件,就能加速访问网站。
4. NPS / FRP 内网穿透
该方法的原理是通过有公网 IP 的服务器来中转请求,需要在服务器和网站所在的设备上分别配置好服务端和客户端。好处是允许网站所在设备没有公网 IP,但需要额外的支出购买服务器。
由于博主在撰写时没有可以使用的服务器,所以在未经测试的情况下无法提供教程,您可以自行参阅项目文档:
- NPS:ehang-io/nps: 一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal. (github.com)
 - FRP:fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. (github.com)