免输入端口号访问!告别端口映射/穿透后烦人的端口号

文章正文
发布时间:2024-04-26 15:58

不少同学家里有 nas 后都会把各种端口开放到公网,做到出门在外也能访问家里的影音服务器,但是由于家宽的特殊性,无法使用 443/80 端口,这在访问各类内网网站的时候都需要加上端口号,有时候不一定会记住那么多的端口号,用起来显然不方便,这时候就可以用到 301 重定向功能,就可以做到不用再记住那烦人的端口号了。

所谓的 301 重定向就是把一个 url 重定向到另一个 url 上,比如访问的是 "a.com",但是会自动重定向(跳转)到 "b.com:1234" 这个网站上,从用户角度来看就是自己访问的是 "http://a.com" 这个地址但是打开了 "http ( s ) ://b.com:1234" 这个网站(在浏览器直接输入 a.com 实际展开是 "http://a.com:80",只是浏览器自动补全了 80 端口以及对应的协议,如果 https 还可以自动转到 443 端口),那相当于自己只用记住 a.com 这一个域名就可以了,特别是在服务多的情况下就记住对应的域名就行,极大的避免了自己会记错端口号导致访问不上的尴尬情况。

但是 301 重定向也有对应的局限性,只适用于有 web 情况,如果服务没有 web 或者本身不支持重定向,那此方法就无效,例如 jeffylin 本身有 web,那就可以用 301 重定向来实现不加端口号访问,但是如果是 ssh 这种不是 http 的就无效。

这里就介绍多种姿势,利用不同的方法实现 0 成本 / 低成本实现 301 重定向。

一、前提准备

准备一个域名,假设原域名为 "1.a.com" 且已经正确解析到对应的 ip,服务对应的端口号为 1234,且为 http 服务,那重定向地址就为 "http://1.a.com:1234",如果是 https 则是 "https://1.a.com:1234";新访问的域名为 "2.a.com"。

方法一:dns 解析 + 重定向

这种一种方式是直接在域名解析的时候就添加一个 url 重定向,但这种需要特定域名商支持。这里推荐腾讯的 dnspod 或者 cloudflare(简称 cf),如果目前的域名服务商不支持 url 重定向的话可以换到这两家进行解析,这里也只以这两家为例。

注意:如果目前使用的域名商不支持此功能,就需要迁到腾讯或者 cf,只更改解析的服务商就可以了,不用把整个域名迁移过去。至于为什么我只提这两个服务商,是因为我只知道这两家,国内其他的家好像都没有这个服务,至于海外我没了解过其他的厂家,只知道 cf。

1. 腾讯云 dnspod:

前排提醒:受限于国内政策,在国内服务商使用此服务需要进行域名备案,如果不方便备案,建议考虑 cloudflare,备案有关内容可以参考往期文章《个人首次域名备案避坑指南(二)》。

登录腾讯云进入域名解析的控制台,这里添加一个 "2.a.com" 的解析,记录类型选择显性 url/ 隐性 url(显性指重定向后可以看到实际域名,隐性则看不到,这个显隐性看自己需求),目标 url 填入所需要的重定向的地址 "http://1.a.com:1234",然后确定就可以了。

不过 dnspod 免费版只支持 2 条 url 重定向,如果需要升级到其他的版本,简单来说就是加钱,不过专业版一般不用那么贵,看着买就行。

2.cloudflare

cf 添加域名解析的教程请看往期文章,这里不再赘述。

登录 cf 域名后台,先添加 "2.a.com" 普通解析,这里解析地址随便填写,因为最后是需要重定向,这个解析就无关了,解析地址填写 "8.8.8.8"(但不能为 "1.1.1.1")都可以,最后这个代理状态需要开启。

注意:这一步和腾讯云不同,在腾讯云上是不用添加普通解析的,但是在 cf 上是需要先添加一个普通解析。

然后展开规则,进入重定规则,添加规则,名称随意,规则选择自定义模式,字段需要选择主界面,运算符选择等于,值就填入 "2.a.com",url 重定向类型选择静态,url 填入 "http://1.a.com:1234",状态代码选择 301 就行,然后部署。

cf 其实也不止这一个方法可以做到 301 重定向,但是这个是最简单的,其他的还有 Workers 实现重定向(有点麻烦,需要会 json,使用起来还有限制,以后再写个教程),或者添加页面规则(页面规则只能三条,没必要用这种方式)。cf 重定向也是有数量限制的,免费是 10 条,需要更多条数得加钱(那就很贵了)或者用下面一种方法。

方法二:用云服务器实现重定向

如果手上有云服务器就可以用云服务器 +nginx 的方式实现 301 重定向,为什么一定要云服务器呢,因为很显然只有云服务器才开放 80/443 端口,才可以实现免输入端口重定向,当然如果想用非 80/443 端口实现重定向也可以,但就得记端口号。

注意:如果使用国内服务器部署这个域名也是需要备案的,不然 80/443 端口一样无法使用,如果不方便备案,建议选择海外的服务器。

这里我使用宝塔面板来配置 301 重定向,当然如果各位童鞋会手搓 nginx 配置文件的话完全不需要用宝塔面板。如果不会手搓也不想用宝塔面板,也可以选择其他的 nginx 面板(以后写一篇教程),但本文只涉及宝塔的教程。宝塔面板详细安装教程可以查看往期文章《几分钟搭建多人使用的 cloudrever 网盘》,只需要安装好 nginx 就行。

先安装宝塔面板:

if [ -f /usr/bin/curl ] ;then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

安装好后登录宝塔面板后台,如果没有弹出安装默认的软件的话,进入软件商店,搜索 nginx 安装就行,如果已经安装就不用管。

再进入网站,添加站点,域名填写 "2.a.com",ftp、数据库这些都不用创建,php 纯静态就行,然后提交。

添加好网站后点击网站名称,进入重定向设置,添加重定向,重定向类型选择域名,方式选择 301,重定向域名选择刚刚建立的 "2.a.com",目标 url 就是重定向的地址 "http://1.a.com:1234",提交后就完成了。

需要多个重定向就按照方法添加多个网站设置重定向就行了。

如果不想要宝塔面板,想手搓 nginx 配置文件的童鞋,可以直接在 nginx 配置中添加这一段代码就行:

if ( $host ~ '^2.a.com' ) { return 301 :1234$request_uri; }

如果不想用这些方法也行,可以自己写一个 js,在里面添加跳转规则,一样能实现重定向的功能,这里我就不过多介绍了,想手搓的童鞋可以自行百度。总之在有云服务器的情况下实现重定向的办法非常多。

方法三:其他

如果嫌域名商 url 重定向数量少,又没有云服务器,也不想花钱怎么办,那可以做到记住多个域名加一个端口来访问不同网站,用家里的 nas 或者设备就行。比如 "2.a.com:888" 访问的是 "1.a.com:1234","3.a.com:888" 访问 "1.a.com:666",这样只用记住对应的域名 + 一个端口号,记忆量也是大幅度减少。

这个方法实现也很简单,步骤和方法二一样,只是在添加网站的时候把端口号加进去就行了,后面重定向步骤一样。这样的话就可以做到访问 "http://2.a.com:888" 重定向到 "http://1.a.com:1324"。完成后记得在路由器映射 888 端口就行了。

五、检测访问

当配置好后就可以在浏览器输入 "2.a.com",然后浏览器就可以自动跳转到 "http ( s ) ://1.a.com:1234"。