不少同学家里有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添加域名解析的教程请看往期文章《利用cloudflare搭建gh-proxy加速github》,这里不再赘述。
登录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 http://1.a.com: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”。
评论前必须登录!
注册