前面章节讲了你可以从外网,通过https+自己的域名(DDNS公网IP)+路由器端口转发来访问家中的飞牛nas了。但如果要访问飞牛nas上的其他docker,甚至其他家中的设备,就需要路由器转发不同的端口,到不同的家中设备IP和端口,证书及端口转发配置复杂不说,端口开多了安全性也得不到保障。这时就可以用反向代理+二级域名来解决。

说的反向代理,先说一下代理。记得几十年前,用电话线路拨号上网,拨号的电脑上装个代理软件,家中其他电脑就能通过这个代理软件一起去冲浪了。现在我们的需求是,外网访问回来只有1个IP,如何方便地访问家中不同IP+端口的应用,这就是反向代理。

反向代理的软件也很多,目前比较推荐的还是nginx。nginx不只是能做反向代理,还能实现负载均衡、静态网页、web防火墙、访问控制、IP地址限制、SSL/TLS加密等多种能力,nginx具有稳定性高,资源占用小等优点,很多网站都用nginx,作为家用nas也很适合。

不过看了一下飞牛nas应用中心并没有nginx,当然飞牛nas是基于Linux内核(Debian发行版)深度开发,自己安装也没问题(不知飞牛nas系统中集成了没有,没去研究),但nginx的配置文件操作有些复杂。好在也有Nginx Proxy Manager、NginxWebUI等管理界面来操作,就方便多了。因为应用中心没有,就装docker版吧。docker的教程网上很多,可自行搜索学习一下。

一、下载docker镜像

飞牛nas(五、反代篇)

二、新建容器运行起来,在这里也可以直接运行,自动创建容器,重点注意一下配置项

飞牛nas(五、反代篇)

443:未来反向代理https访问端口,可以用飞牛nas本机的端口去映射,考虑飞牛nas可能某些端口已占用,可以设置为其他端口,如4443

80:未来反向代理http访问端口,同样,可以设置为用飞牛nas本机其他端口映射,如8080

81:管理界面端口,同样,可以设置为用飞牛nas本机其他端口映射,如8081

另外,Nginx需要保存证书和各种文件,因此,在飞牛nas文件夹管理中,新建两个目录,在这里进行映射,这样,你在docker中的Nginx Proxy Manager进行的操作配置内容,都会存到你的飞牛nas文件夹管理中的这两个目录中。后面就算你把docker镜像删除重装,只要仍按上面映射,则以前的操作配置内容就可以直接使用。

三、登录管理npm页面

浏览器访问:http://飞牛nasIP:8081(第二步你映射的管理界面端口)

飞牛nas(五、反代篇)

第一次默认的是默认帐户:admin@example.com 默认密码:changeme。不同的Nginx Proxy Manager可能不一样,可在网上搜索一下。进去后,按提示重新设置账号/密码。

四、申请自己的域名证书

前一章节讲了通过路由器端口转发,使用https访问。使用反向代理,我们也要使用https访问保障基本的传输安全。要使用https访问,首先就要为nginx安装证书。前一章节说到,腾讯云免费证书不支持泛域名,飞牛nas不支持自动证书(目前功能界面上只能自己上传证书)。现在,可以看一下,在Nginx Proxy Manager,中如何使用免费的泛域名证书,且支持续期(免费证书期限都不长)。

先进入Nginx Proxy Manager,进入SSL Certificates菜单,添加证书

飞牛nas(五、反代篇)

这里我们选择Let's Encrypt申请他的免费证书。关于Let's Encrypt,大家可以自行搜索一下,我的asus路由器也是用的这个免费证书。Custom则可以自己上传证书,你可以从你的域名注册机构去申请并下载回来,如前面的腾讯云。

为后续二级域名访问不同的飞牛nas应用或docker或其他家中设备,这里直接申请泛域名证书。

飞牛nas(五、反代篇)

1、Domain Names:直接申请泛域名:*.xxxxx.cn,xxxxx.cn是你自己的域名(见前面章节)

2、Email Address for Let's Encrypt:填个自己的邮箱吧,这个点有点奇怪,我并没有在Let's Encrypt的网站上注册过:)

3、下面就是域名的验证了,证名域名是你的,有多种认证方式,具体要看你购买域名的服务商的支持方式了,比如用CNAME记录的方式认证。我购买的腾讯云的,可以用DNSPod Token的方式

4、再次登录腾讯云控制台,进入账号中心。前面我们是创建过腾讯用API密钥(用于飞牛nas的DDNS设置,还记得吧),这次,我们要创建DNSPod Token

飞牛nas(五、反代篇)

同相要注意保存DNSPod Token,后续无法在腾讯云中查询。创建完成后,你会得到一串大概6位数的ID和Token

5、回到Nginx Proxy Manager,勾选Use a DNS Challenge,选择DNS provider为腾讯云的DNSPod(根据你的域名提供商选择)

飞牛nas(五、反代篇)

重点是Credentials File Content中的参数,可以看到有两个:

1)、dns_dnspod_email:第一次我没申请成功,后来登录腾讯云,绑定了邮箱,录的绑定邮箱才成功,不知是不是跟这个有关系

2)、dns_dnspod_api_token = "id,key":将在腾讯云创建的DNSPod Token,按格式填入。第一次我填的是腾讯云API的密钥没成功,后来才发现要用DNSPod Token的ID和Token。

6、勾选I Agree to the。。。,再save,过几十秒,证书就申请成功了。可以再次续期或下载证书

飞牛nas(五、反代篇)

五、添加反向代理

现在可以添加反向代理了。不添加证书,你也可以添加反向代理,但只能使用http协议。

飞牛nas(五、反代篇)

先添加第1个反向代理,比如就是家中的飞牛nas

飞牛nas(五、反代篇)

1)、Domain Names:首先给家中的飞牛nas想个外网访问好记的二级域名吧,比如nas.xxxxx.cn

2)、Scheme:因这里就是家中访问家中了,就可以不用https,就选http吧。如果你非想要全链路https,就选https,需要注意访问的家中网站需要安装证书且启用https访问。

3)、Forward Hostname / IP:转发到家中飞牛nas的IP

4)、Forward Port:转发到家中飞牛nas的端口,http是8000,如果用tttps,就是8001

5)、Cache Assets(缓存)、Block Common Exploits(阻止一些常见漏洞)、Websockets Support(web的长连接,某些网站仍用了),按需勾选,不懂就先全勾上。

再切到SSL页签

飞牛nas(五、反代篇)

选择刚申请的证书(为方便,申请的泛域名证书),再建议把下面4个去勾选上(试过不同的网站,有些少勾选了就无法访问)。再Save就设置好了

六、路由器开端口转发

前面章节说我们已经在路由器上设置了一个端口转发(外网的10080端口转发到192.168.0.250:8001),为啥还要设置一个呢?是因为上次设置的,是外网https直接访问飞牛nas服务器,现在我们通过nginx来反向代理,因此,我们需要重新设置一个端口转发,当然,你修改以前的端口转发也可以,就关闭了直接访问飞牛nas的方式了。

路由器的具体设置参考前面章节,我们现在设置一个端口转发:

外网的10088,转发到192.168.0.250:4443。为啥是4443,还记得docker运行Nginx Proxy Manager镜像的端口映射了吧,我们是把飞牛nas上的4443,映射到了Nginx Proxy Manager的443端口。

现在,你在外网,就可以使用:https://nas.xxxxx.cn:10088来访问飞牛nas了。飞牛移动端APP,也可以使用nas.xxxxx.cn:10088来访问(勾选HTTPS)。因目前网络营运商都关闭了80、443端口,所以我们只能用类似10088这样的其他端口来访问。nginx反向代理设置了force ssl,所以你外网访问时,直接nas.xxxxx.cn:10088,也会跳转到https去连接。

我把访问家中路由器也反向代理了,Nginx Proxy Manager的管理页面也反向代理了。这样,在外网,我就可以通过不同的二级域名,路由器也只开放1个端口,就能访问不同的服务器+端口的资源了。后续安装各种docker应用,都可以在这里添加不同二级域名的反向代理就可以了。比如现在在外网,用nginx.xxxxx.cn:10088,就可以访问到Nginx Proxy Manager的管理页面了(不过这个非常不建议放到外网访问,我只是外网测试用)

飞牛nas(五、反代篇)

Nginx还有很多有关安全方面的设置,大家可以自行研究一下。

不过这个Nginx装在docker中始终不爽,Nginx应该安装在家中网络中更前端的位置。后续去研究一下华硕的路由器看看有没有办法,如果不行的话,再看飞牛nas的应用中心的lucky(初看了一眼是个国产软件,功能也挺丰富),或直接在飞牛nas中通过ssh去安装nginx。下一篇,来看看lucky。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

,

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。