群晖Docker,走起! 篇十五:群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

2024-01-17 09:41:08 30点赞 379收藏 50评论

前面在介绍群晖使用的时候,一直都在介绍群晖自带的代理工具,很多小伙伴在文章下留言,说试试Lucky这个反向代理工具,这个代理工具前面老宁也有过介绍,它集成了DDNS、端口转发、ACME自动证书等等功能,用起来也非常简单。但是它并不开源,老宁多多少少还是有一些顾虑,所以一直都是用的另一款反向代理工具: nginx-proxy-manager (https://github.com/NginxProxyManager/nginx-proxy-manager

方向代理

前面有文章简单的介绍了什么是反向代理,为了便于理解后面的概念,再来详细的介绍下这个概念

反向代理,是在服务器设立代理服务,接收来自客户端的请求后,将请求转发给内部网络中的服务器,并将服务器的响应结果返回给客户端

来详细探索一下,当平时通过域名访问网站时,背后究竟发生了什么

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具
  • 用户通过浏览器输入一个URL,比如 "laoning.com:8080",这个URL地址就会被解析到代理服务器的公网IP地址

  • 反向代理服务器接收到用户的请求后,根据预先的配置规则,将请求转发给内部网络的某个服务器。它可能根据请求的路径、请求的查询参数或请求头等信息,决定应该将请求转发给内部的哪台服务器

  • 内部服务器处理完用户的请求后,将响应结果返回给反向代理服务器

  • 反向代理服务器最后将接收到的响应结果返回给用户的浏览器

来解答下上面的几个疑惑:

  • 为什么平时通过域名访问网站并没有加上类似8080这样的端口号?对于HTTP服务,默认的端口号是80;对于HTTPS服务,默认的端口号是443。浏览器会根据访问协议(HTTP还是HTTPS)自动使用相应协议的默认端口,HTTP为80,HTTPS为443。因此,如果服务器是在默认端口上提供服务,就不用加端口号,而80、443之外的端口就必须要添加上端口号

  • URL地址(域名)如何就访问解析到家里(服务器)的设备?DNS服务可以帮助计算器通过域名获取到IP(可以看我DDNS那篇文章)

当我们访问微信、淘宝都是一样的原理,如果没有代理服务器提供负载均衡等功能,只有一台服务器给10多亿用户提供服务,一旦服务器挂了,那么所有人都无法聊天了。代理服务器的后面都是有很多的服务器,它们内部之间也会进行数据交互,比如一台挂了,其他的服务器会顶上,或者直接把工作转移到正常的服务器

Nginx Proxy Manager

Nginx Proxy Manager是一个管理 Nginx 和 Let‘s Encrypt 的Docker容器,而 Nginx 就是一个免费、开源的,高性能的HTTP和反向代理服务器。所以在 Nginx Proxy Manager 中进行反向代理的设置,其实都是设置的 Nginx 配置文件

安装

打开群晖的【Container Manager】,搜索nginx-proxy-manager,点击jc21/nginx-proxy-manager镜像,选择最新版本进行下载

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

在等待下载过程中,先创建好 nginx-proxy-manager 数据存放的目录。创建npm文件夹,并在该文件夹下分别创建data和letencrypt目录,分别存放nginx配置文件和ssl证书相关文件。这里的npm是nginx-proxy-manager的缩写,并不是Node.js的包管理工具,不要搞混了!

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

回到Container Manager套件,运行刚刚下载好的nginx-proxy-manager镜像。分别给443、80、81端口添加映射,因为一般家庭宽带的443、80都是被运营商封锁的,所以不能同样以443、80进行映射。81为nginx-proxy-manager管理页面使用的端口,443、80为https、http服务的端口

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

存储空间需要添加刚刚创建的data、letsencrypt文件夹,分别对应容器的/data、/etc/letsencrypt路径。data文件夹里存放的就是 nginx 的配置文件

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

其他设置不用更改,直接运行容器。现在用浏览器打开【群晖IP:16081】就能看到nginx-proxy-manager的主界面了

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

默认用户:admin@example.com,密码:changeme。首次登录后,需要修改用户名登录邮箱以及登录密码

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

修改完毕后,就可以在Users界面看到刚刚修改的信息

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

配置

接着打开路由器配置端口转发,把路由器的16080、16443分别转发到群晖(192.168.2.99)的16080、16443端口,协议选择tcp,adsl1、adsl2这些是爱快多播导致的,不用管它

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

现在打开DDNS客户端进行泛域名解析,如果域名为xxx.com,则配置为*.xxx.com,这样访问任意二级域名都会解析到路由器的公网IP地址(默认你知道如何配置DDNS客户端,如果没有配置DDNS,可以参考前面DDNS是什么这篇文章进行配置)

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

回到nginx-proxy-manager界面,点击SSL Certificates菜单下的Add SSL Certificate按钮,并在弹出窗中选择Let‘s Encrypt选项来申请泛域名证书

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

在Domain Names输入框中输入泛域名,例如*.xxx.com;DNS提供商选择阿里云,并在下面填入保存下来的AccessKey IDAccessKey Secret(不知道如何申请,也可以参考DDNS是什么这篇文章)

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

勾选同意并保存后,需要多等一会

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

申请成功后,SSL Certificates列表下会多出一个泛域名证书

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

添加代理

最后就可以在Hosts选项下新增反向代理配置了

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

如果想要把memos服务配置为域名访问,需要在Domain Names中输入你想要访问的域名,例如memos.xxx.com,这里的二级域名可以任意配置。如果是http就在Schems中选择http。IP填入要转发服务器的IP地址(192.168.2.99是老宁群晖的地址,也可以选择其他内网的IP,比如路由器的地址)。端口填入将要转发的端口,比如memos的5230。下面的几个选项建议勾上

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

点击右侧SSL选项卡来配置证书,在SSL证书下拉框中选择最后一个带泛域名的选项

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

下面的选项也都建议勾上,最后点击保存

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

代理列表中的状态如果为Online,就代表配置成功了

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

最后来看看如何访问,直接通过memos.xxx.com是无法访问到内网的memos服务的,必须要通过转发的16080、16443端口才能访问对应的http和https服务。因为memos是加了SSL证书的,所以使用的是16443端口,最终访问memos的URL地址就是https://memos.xxx.com:16443

群晖搭建 nginx-proxy-manager,个人最推荐的反代工具

后面如果想要通过域名访问其他服务,只要在nginx-proxy-manager界面添加代理即可,比如https://openwrt.xxx.com:16443代理OpenWrt的服务;https://ha.xxx.com:16443代理192.168.2.99:8123的 Home Assistant 服务

后记

理解起来可能稍微有点乱,如果你不太懂,建议多看几次文章。要理解运营商是封了80、443端口,所以在Container Manager套件直接配置了16080、16443进行映射,这里可以选择群晖中没有被占用的任意端口,但是不能设置为80、443端口,因为群晖自己在80、443有服务在运行

在路由器上配置端口转发是为了让公网访问到群晖(内网)的设备,这样才能访问到群晖容器中的代理服务器。路由器和群晖的端口都是配置的16080、16443是为了方便理解和维护,如果在公网想要使用不同的端口进行访问,需要修改路由器的16080、16443端口,不能修改群晖的端口,因为在启动nginx-proxy-manager容器的时候就已经配置好了

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

展开 收起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2849元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

2190.84元起

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

4099元起

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

8899元起

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

1549元起

Synology 群晖 DS923+ NAS网络存储服务器 标准无硬盘

Synology 群晖 DS923+ NAS网络存储服务器 标准无硬盘

4899元起

Synology 群晖 DS1821+ 8盘位 NAS(V1500B、4GB)

Synology 群晖 DS1821+ 8盘位 NAS(V1500B、4GB)

7196元起

Synology 群晖 DS223J家用网络存储服务器nas私有云

Synology 群晖 DS223J家用网络存储服务器nas私有云

1549元起

Synology 群晖 DS124 四核心 单盘位 NAS网络存储 私有云 智能相册 文件自动存储

Synology 群晖 DS124 四核心 单盘位 NAS网络存储 私有云 智能相册 文件自动存储

1399元起

Synology 群晖 DS720+ 双盘位NAS(J4125、2GB)

Synology 群晖 DS720+ 双盘位NAS(J4125、2GB)

4099元起

群晖(Synology)DS124单盘位NAS网络存储服务器私有云智能相册文件自动同步

群晖(Synology)DS124单盘位NAS网络存储服务器私有云智能相册文件自动同步

1399元起

Synology 群晖 DS218+ 2盘位 NAS网络存储服务器 京东云定制版(J3355、2GB)

Synology 群晖 DS218+ 2盘位 NAS网络存储服务器 京东云定制版(J3355、2GB)

暂无报价

synology群晖nas云存储ds920+中小型企业办公网络存储群辉家庭个人私有云盘四盘位NAS备份硬盘服务器ds918+(DS920+希捷企业级16T*4)

synology群晖nas云存储ds920+中小型企业办公网络存储群辉家庭个人私有云盘四盘位NAS备份硬盘服务器ds918+(DS920+希捷企业级16T*4)

13746元起

群晖(Synology)群晖(Synology)DS224+搭配2块希捷(Seagate) 4TB酷狼IronWolf ST4000VN006硬盘套装

群晖(Synology)群晖(Synology)DS224+搭配2块希捷(Seagate) 4TB酷狼IronWolf ST4000VN006硬盘套装

暂无报价

Synology 群晖 DS416 企业级 NAS网络存储

Synology 群晖 DS416 企业级 NAS网络存储

暂无报价

文中相关商品

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)
Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)
50评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
379
扫一下,分享更方便,购买更轻松