我的群晖服务外网访问一直是使用的端口映射的方式进行的,这么做的结果就是我的服务不是ssl的,而且要记很多的端口,用起来既不方便也不安全,调研了一段时间之后,结合自己的服务数量,感觉还是使用群晖自带的服务最省事,当然也有其他例如traefik,nignx proxy manager等方案。
准备工作
- 一个域名,且已经申请ssl证书,完成解析
- dns,域名解析相关知识
- 反向代理知识
- 公网ip或者内网穿透
80和443端口
一般我们访问各种服务都是ip+端口的形式,当然web服务也不例外,我们平时访问的http://www.baidu.com,其实访问的百度的IP+80端口,https://www.baidu.com,是ip+443端口,因为这个经常用,所以浏览器帮我们省略掉了端口的显示。
众所周知的原因,在我国大部分地区,80和443端口是封闭的,也就是你要通过公网ip访问家中的服务一般是要使用其他端口的。一般来说可以用的端口有65535个
,但是其中一些端口号已经被一些服务占用了。
反向代理
可以参考这篇文章,里面讲了反向代理的原理和一些好处,我们这次主要拿来做ssl加密访问。
我们平时使用的Nginx就是一个常拿来做反向代理的工具。
操作流程
修改dns解析
首先在cloudflare上添加dns解析,选择cname类型,名称选择*,让范域名解析到你的反向代理服务器的地址上,好处是不需要一个个添加二级域名,坏处是任何未设置反向服务的二级域名都会跳转到你反向代理服务器上。当然你也可以使用二级域名来一个个添加。
这里的主要目的就是让相关二级域名跳转到你的反向代理服务器上。
设置群晖反向代理
这里很简单就是把你反向代理服务器目前开放的web服务映射到你群晖的服务上就行了。
来源:
协议,我们选择https,
主机名,选择你的二级域名,比如说emby.xxxx.com,端口随意选择,一般我们选择统一的一个,比如说群晖默认对外的443端口5001,启用hsts
目的地:协议,选择http,主机名选择服务所在的群晖地址或者其他地址,端口选择服务的内网端口
自定义标题,一般添加websocket,保证兼容性。
到这里你就可以通过https://emby.xxx.com:5001来访问你内网的emby服务了
当然你可以通过公网的一台服务器来做个内网穿透,使用公网服务器的web服务443端口来访问你的群晖服务,这样做的好处就是不需要运营商的公网ip,另外域名后面也没有端口号的小尾巴了。