本文作者:zhujue

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

zhujue 2024-05-16 18:26:39 33 抢沙发
群晖Docker,走起! 篇十五:群晖搭建 nginx-proxy-manager,个人最推荐的反代工具摘要: ...
[youbanshan]

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

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

2024-01-17 09:41:08

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

反向代理

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

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

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

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

  • 用户通过浏览器输入一个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镜像,选择最新版本进行下载

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

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

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

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

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

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

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

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

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

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

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

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

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

配置

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

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

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

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

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

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

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

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

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

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

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

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

添加代理

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

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

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

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

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

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

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

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

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

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

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

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

后面如果想要通过域名访问其他服务,只要在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容器的时候就已经配置好了



[/youbanshan]
文章投稿或转载声明

来源:他们都叫我老宁-群晖搭建 nginx-proxy-manager版权归原作者所有,转载请保留出处。本站文章发布于 2024-05-16 18:26:39
温馨提示:文章内容系作者个人观点,不代表天云博客对其观点赞同或支持。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,33人围观)参与讨论

还没有评论,来说两句吧...