一、前言

众所周知,所有网络服务在运行时都需要监听端口号,例如通过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 访问网站:

  1. 主机名a -> 记录类型A/AAA -> 记录值IP地址

  2. 主机名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攻击防御。

1725509098750_Cloudflare解析域名并开启代理.png

Cloudflare代理在开启状态下,会先通过443端口强制SSL连接中转服务器,再由中转服务器通过80/443端口连接至网站。由于网站的80/443端口不通,因此需要额外的配置修改代理服务器连接网站使用的端口。

切换加密模式

点击菜单SSL/TLS -> 概述 -> 配置,切换加密模式到完全(严格)

1725509098750_Cloudflare切换加密模式.png

获取边缘证书

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

1725509098750_Cloudflare获取边缘证书.png

创建规则

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

1725509098750_Cloudflare配置Origin Rules规则.png

在像实例图片这样配置后,访问https://test.myhs.cc就相当于访问的是http://123.123.123.123:12345,而且还是SSL加密连接。

如果只需要对某个特定的域名解析生效,还可以点击图中的And按钮添加主机名规则。


该方法唯一的缺点就是代理服务器都在国外,访问速度很慢。如果想加速自己电脑的访问速度,可以通过测试工具获取访问速度最快的代理服务器IP并修改Hosts文件,就能加速访问网站。

4. NPS/FRP内网穿透

该方法的原理是通过有公网IP的服务器来中转请求,需要在服务器和网站所在的设备上分别配置好服务端和客户端。好处是允许网站所在设备没有公网IP,但需要额外的支出购买服务器。

由于博主在撰写时没有可以使用的服务器,所以在未经测试的情况下无法提供教程,您可以自行参阅项目文档: