网上类似教程非常多,本文关于代理的内容有所敏感,所以没必要转载我的这篇文章哈!
前言
我的群晖服务外网访问一直是使用的端口映射的方式,我群晖上部署的服务都没有(๐•ᴗ•๐)SSL,那就有人要问了——(๐•ᴗ•๐)不(๐•ᴗ•๐),有必要?对于作者我来说,非常有必要,因为:
- 要记很多的端口
- 用起来既不方便也不安全
- 没有小绿锁看着很不爽
- 我群晖上的部分服务必须要求有SSL加密,如bitwarden
调研了一段时间之后,结合自己的服务数量,认为还是使用群晖自带的服务最省事也最方便,适合小白操作。当然也有其他解决方案:
- traefik
- nignx
- proxy manager
准备工作
- 一个域名,且已经申请ssl证书,完成解析。申请SSL教程
- dns,域名解析相关知识
- 反向代理知识
- 公网ip或者内网穿透
- 阅读文章:[授权转载]群晖NAS反向代理+内网穿透=无需端口访问内网所有服务无需端口
知识背景
了解背景知识有利于了解工作原理,能够帮助你更好地解决实施中遇到的问题,但由于本文知识背景部分内容较长,故设置折叠,但我还是推荐操作前阅读一番。
展开
隐藏
该部分更详细的内容参见:
80和443端口
一般我们访问各种服务都是ip+端口的形式,当然web服务也不例外,我们平时访问的http://www.baidu.com,其实访问的百度的IP+80端口,https://www.baidu.com,是ip+443端口,因为这个经常用,所以浏览器帮我们省略掉了端口的显示。
我国80和443端口是封闭的,也就是你要通过公网ip访问家中的服务一般是要使用其他端口的。一般来说可以用的端口有65535个
,但是其中一些端口号已经被一些服务占用了。
正向代理
转发代理,通常称为代理、代理服务器或 Web 代理,是位于一组客户端计算机之前的服务器。当这些计算机向 Internet 上的站点和服务发出请求时,代理服务器将拦截这些请求,然后代表客户端与 Web 服务器进行通信,起到中间设备的作用。
例如,典型的转发代理通信中涉及 3 台计算机:
A:这是用户的家用计算机
B:这是一个转发代理服务器
C:这是网站的源站(用于存储网站数据)
在标准的互联网通信中,计算机 A 将直接与计算机 C 保持联系,客户端将请求发送到源服务器,并且源服务器将响应客户端。当存在转发代理时,A 将请求发送到 B,B 随后将请求转发给 C。C 将向 B 发送响应,而 B 则将响应转发给 A。
为什么要将这个多余的中间设备添加到 Internet 活动中?使用转发代理可能有几个原因:
为避免州或机构的浏览限制——一些政府、(๐•ᴗ•๐)和其他组织使用防火墙来使用户访问受限版本的互联网。转发代理可用于绕过这些限制,因为它们使用户可以连接到代理,而不是直接连接到他们正在访问的站点。
阻止访问某些内容——相对的,也可以设置代理以阻止特定用户群访问某些站点。例如,(๐•ᴗ•๐)网络可能配置为通过启用内容筛选规则的代理连接到 Web,以拒绝转发来自 Facebook 和其他社交媒体网站的响应。
保护自己的在线身份——在某些情况下,常规互联网用户希望增加在线匿名性,但在其他情况下,互联网用户居住在政府可能对政治异议者施加严重后果的地方。在网络论坛或社交媒体上批评政府可能会导致这些用户受到罚款或监禁。如果持不同政见者使用转发代理连接到他们发布政治敏感评论的网站,则用于发表评论的 IP 地址将更难追溯到持不同政见者。仅代理服务器的 IP 地址将对他人可见。
反向代理
反向代理是位于一个或多个 Web 服务器前面的服务器,拦截来自客户端的请求。这与转发代理不同 - 在转发代理中,代理位于客户端的前面。使用反向代理,当客户端将请求发送到网站的源服务器时,反向代理服务器会在网络边缘拦截这些请求。然后,反向代理服务器将向源服务器发送请求并从源服务器接收响应。
转发代理和反向代理之间的区别非常细微,但非常重要。简单概括而言,转发代理位于客户端的前面,确保没有源站直接与该特定客户端通信;而反向代理服务器位于源站前面,确保没有客户端直接与该源站通信。
这一次,所涉及的计算机包括:
D:任意数量的用户家用计算机
E:这是反向代理服务器
F:一台或多台源站
通常,来自 D 的所有请求都将直接发送到 F,而 F 会直接将响应发送到 D。使用反向代理,来自 D 的所有请求都将直接发送给 E,而 E 会将其请求发送到 F 并从 F 接收响应,然后将适当响应传递给 D。
下面是反向代理的一些好处:
负载均衡 - 一个每天吸引数百万用户的热门网站可能无法使用单个源服务器处理所有传入站点流量。但该站点可以分布在不同服务器的池中,让所有服务器都处理同一站点的请求。在这种情况下,反向代理可以提供一种负载均衡解决方案,在不同服务器之间平均分配传入流量,以防止单个服务器过载。如果某台服务器完全无法运转,则其他服务器可以代为处理流量。
防范攻击 - 配备反向代理后,网站或服务无需透露其源服务器的 IP 地址。这使得攻击者更难利用针对性攻击,例如 DDoS 攻击。这时候,攻击者只能针对反向代理,例如 Cloudflare 的 CDN,而后者拥有具有更严格的安全性,拥有更多资源来抵御网络攻击。
全局服务器负载平衡 (GSLB) - 在这种负载均衡形式中,一个网站可以分布在全球各地的多个服务器上,反向代理会将客户端发送到地理位置上最接近它们的服务器。这样可以减少请求和响应传播的距离,从而最大程度地减少加载时间。
缓存 - 反向代理还可以缓存内容,从而提高速度。例如,如果巴黎的用户访问使用反向代理而 Web 服务器位于洛杉矶的网站,则该用户实际上可能连接到巴黎本地的反向代理服务器,然后该本地反向代理服务器必须与洛杉矶的源服务器进行通信。之后,代理服务器可以缓存(或临时保存)响应数据。随后浏览该站点的巴黎用户将从巴黎反向代理服务器处获取本地缓存的响应,从而享受到更快的性能。
SSL 加密 - 加密和解密每个客户端的 SSL(或 (๐•ᴗ•๐)S)通信对于源服务器可能需要耗费大量计算资源。可以配置由反向代理解密所有传入请求并加密所有传出响应,腾出源服务器上的宝贵资源。
操作流程
修改dns解析
首先在cloudflare上添加dns解析,选择cname类型,名称选择*,让泛域名解析到你的反向代理服务器的地址上,好处是不需要一个个添加二级域名,坏处是任何未设置反向服务的二级域名都会跳转到你反向代理服务器上。当然你也可以使用二级域名来一个个添加。
这里的主要目的就是让相关二级域名跳转到你的反向代理服务器上。
设置群晖反向代理
这里很简单就是把你反向代理服务器目前开放的web服务映射到你群晖的服务上就行了。
来源:
协议,选择https
主机名,选择你的二级域名,比如说emby.xxxx.com,端口随意选择,一般我们选择统一的一个,比如说群晖默认对外的443端口5001,启用hsts
目的地:
协议,选择http,主机名选择服务所在的群晖地址或者其他地址,端口选择emby服务的内网端口
自定义标题,一般添加websocket,保证兼容性,不添加也能正常使用。
当然你可以通过公网的一台服务器来做个内网穿透,使用公网服务器的web服务443端口来访问你的群晖服务,这样做的好处就是不需要运营商的公网ip,另外域名后面也没有端口号的小尾巴了。
配置SSL证书
以DSM7.1为例,如图进入设置
选择添加新证书
导入申请的证书
上传证书和密钥,注意:一般申请SSL是没有中间证书的,没有中间证书群晖上大多数服务是不受影响的,但bitwarden的手机app会受影响。
完成证书导入后,点击设置,为反向代理服务配置证书
完成配置后,就可以通过https://emby.xxx.com:5001来访问你内网的emby服务了。
Pter受用的系列教程:
【小白向】SSH基本教程
emby多端播放一文通
Docker-Transmission安装教程
emby多端播放之Windows播放
emby多端播放之macOS播放
群晖反向代理实现https小绿锁
[搬运]PT新手入门必看教程
强大的本地媒体库管理软件Kodi使用教程
【小白向】为(๐•ᴗ•๐)添加telegram bot机器人
【独占原创】为你的QB换个皮-Qb WebUI更换教程
emby多端播放之手机播放(Android和iOS均有)
emby多端播放之Android TV播放(电视盒子同样适用)
[授权转载]群晖NAS反向代理+内网穿透=无需端口访问内网所有服务无需端口