本文前提是基于已有公网IP,已有自己可控的域名,已经做好DDNS动态域名解析这三点。
这三点站内有很多教程,大家可以自行搜索,不再赘述。
配置好反向代理以后,还可以通过申请免费的ssl证书,来给我们的各种服务都套上https小绿锁。
有关泛域名证书的申请,大家可以看这篇好文。
unraid 篇一:群晖使用任务计划实现Let's Encrypt 泛域名证书自动更新
精力有限,所以本文只讨论反向代理有关的东西。
可能有人不是很理解反向代理是什么意思。
简单点来说反代服务器可以看做是部队通信兵,各种服务就是军区里的战士。
军区不能随便进出,只能通过送信兵给住户收发信件。
外面的人不知道战士在军区里的具体位置(具体IP端口),只知道战士的名字或者代号(外网访问的域名),只能找军区大门的通信兵代为转达,军区大门(外网端口)可以有多个,也可以只有一个,都是由通信兵把手。
通信兵有一个小本子记着战士代号和战士具体位置的对应关系,通过对应关系来收发信件(传输数据)。
参考配置图(通信兵的小本子)
左侧红框内就是用作外网访问的域名+端口,右侧黄框内就是内网的各类服务(当然外网也可以,只要你的NAS可以访问这些域名+端口)。
左右是互相对应的。
外网访问左侧的域名+端口(外面人写信交到军区大门),反代服务器(通信兵)收到请求对照规则(小本子),把访问指向左侧IP+端口(战士位置)并返回相应的回应(回信)。
这样就很好理解了。
我们只需要通过二级域名来区分,就可以利用反代服务器实现单个端口访问N个服务。
假设我的一级域名是baidu.com
我可以添加无数个二级域名来分别对应各个服务。
比如
qBdown.baidu.com 对应 qB下载客户端
qBup.baidu.com 对应 qB保种客户端
tr.baidu.com 对应 tr下载客户端
nas.baidu.com 对应 群晖管理webUI
unraid.baidu.com 对应 unraid管理webUI
photo.baidu.com 对应 群晖photostation
emby.baidu.com 对应 emby服务端webUI
等等
理解了上面这些,后面的操作就很简单了。
下面我们来实操。
我现在的内网IP网段是192.168.3.X
我新添加了一个OP旁路由,IP为192.168.3.2
打算给它分配对应的域名是openwrt.xxxx.top
首先我们打开域名DNS控制台(这里以DNSPOD为例,其他域名服务商的管理操作基本类似)
添加一条CNAME记录
主机记录填openwrt(就是二级域名openwrt.xxxx.top的前缀)
记录类型选CNAME
记录值填写我们用作DDNS的那条二级域名,我这里是ddns.xxxx.top
CNAME记录的意思就是,这条记录直接指向现有域名。
我们指向了用作DDNS的那条二级域名,访问CNAME记录域名的结果就和访问所指向域名是一样的(都是访问你的公网IP)。
添加好二级域名,我们来到群晖反向代理服务器设置界面。
6.X系统设置路径为
控制面板-应用程序门户-反向代理服务器
7.X系统设置路径为
控制面板-登录门户-高级-反向代理服务器
添加一条代理规则(给通信兵的小本子加对应名单)
规则很好理解,就是把上方来源处的域名+端口指向下方目的地的IP(域名)+端口
按照我的预想来配置,就是把openwrt.xxxx.top这个二级域名通过5555端口,指向旁路由的服务IP192.168.3.2+端口。
目的地的填写规则,以旁路由为例。我们可以通过http协议访问,也可以通过https协议访问。如果是http协议访问,规则就选http 192.168.3.2 端口80;如果是https协议访问,规则就选https 192.168.3.2 端口443,都可以实现访问。
按照你所需访问的服务的IP和端口填写即可。
这里顺便提一嘴,我们平时访问的网站大多是不用输入端口的。但是并不是说不需要端口,而是浏览器默认不显示而已。如果是http协议,则80端口默认不显示,如果是https协议,则443端口默认不显示。
比如我们平时访问的站点 www.baidu.com 实际上访问的是 https://www.baidu.com:443
再比如我们访问内网华硕路由只要输入IP 192.168.50.1 实际上访问的是 http://192.168.50.1:80
填写好规则以后,我们把标签页切换到自定义标题。按步骤添加websocket,避免各种疑难杂症。
群晖是傻瓜式添加,很方便。之后确认保存即可生效。
重点来了,想要外网访问正常,我们必须保证反向代理服务器用的端口是可以连通的(军区大门要打开!否则通信兵也接不了信!)。
在这里我用的是5555端口,所以必须保证端口开启,也就是必须对这个端口进行转发。
也可以使用其他端口,自行定义即可。如果你的80、443端口没有被封,那么还可以通过反代来实现各个服务无端口访问。
来到路由配置好5555端口的转发规则就完成了。
完成以后切到外网环境测试。
打开配置好的二级域名。成功。
如果想增加其他反代项目也是非常方便。
比如我在另一台设备上搭建了emby服务器。IP为192.168.3.131,端口为8096。
同样的我们来到域名管理,添加一条新的二级域名,同样使用CNAME记录。
这里我把域名设置为myemby.xxxx.top。
然后回到群晖的反代配置页面,新增反代规则。
一样的道理,把二级域名指向目标服务即可。
我这里把myemby.xxxx.top:5555指向192.168.3.131:8096
记得添加websocket
完成后确定。
切到外网环境测试,成功。
通过增加配置反向代理,我们就可以通过一个端口访问N种服务,不用再开一大堆端口给单个设备或者单个服务。
只要是反代服务器能访问到的服务,我们都能够通过配置来进行代理。
不止限于内网服务,大家可以慢慢消化理解,举一反三就可以了。
参考配置