反向代理:一种非常方便的部署HTTPS的方法(以下简称反代)。对于我这种不懂代码的人,使用nginx本身写配置来完成反向代理的设置实在是一件过于困难的事情。
所以我们就让成品的软件来为我们提供服务吧。现在要介绍的是:NginxProxyManager------------一款专门提供反向代理的软件(它本身的其他功能请自行摸索)。
在unraid的app商店中搜索NginxProxyManager,显示的是这样的:
翻译过来的意思的:Nginx代理管理器使您可以轻松转发到在家运行或以其他方式运行的网站,包括免费的SSL,而无需过多了解Nginx或Letsencrypt。
首先明确一点就是:unraid下的app商店里面的东西,都是docker镜像,所以这个软件在其他的可以运行docker的系统里面也是可以正常部署和运行的,只是unraid的app商店里面提供了部署模板,会更方便而已。
这里也附上此项目的地址:Nginx Proxy Manager(github) ,Nginx Proxy Manager(dockerhub)。
废话不多说,说完介绍,现在开始说如何部署和设置这个软件:
unraid中部署页面是这样的:
简单介绍下:3个端口:7818是程序的管理端口,你的管理界面从这个端口进行访问;1880是程序的http端口,你反代到程序的http页面通过这个端口访问;18443是你反代到程序的https页面通过这个端口访问。你可以把你的端口改成你乐意的数字(注意在端口范围内),不和其他端口重合就行。
设置好之后,按下apply键。docker就会从dockerhub pull 下来这个镜像,按照模板的配置,生成容器。换句话说,就是应用按照设置下载好了。
浏览器里面输入:http://ip:7818(或者你设置的端口) 访问反代程序的管理页面:
默认的登录账户和密码是:
- Email address:
admin@example.com
- Password:
changeme
登录进去后,会弹出一个窗口,让你修改登录账户和密码。
点击页面上方的Dashboard 标签,进入主界面。选择绿色的Proxy hosts.(这里是反向代理页面,其他三个页面请自行摸索)
面对一片空白的页面,还犹豫什么,赶快点击中间绿色的Add proxy Host 吧。
请不要着急,这只是先让你知道 反代服务在哪里,要想实现HTTPS化,首先需要添加证书。
首先选择标签栏的SSL Certificates 。这里是申请和添加证书的地方:
申请是通过 Let's Encrypt Certificate(目前还不支持dns验证),通过它申请ssl证书你需要80/443端口。如果你没有的话,还是老老实实通过其他方式申请证书。(具体如何操作,自行百度)
选择右上角的Add SSL Certificate 下来选项 选择Custom
弹框中,给你的证书随便起个名字(起区分作用),其中key 是私钥(必须),certificate 是域名证书本身(必须),Intermediate Certificate是中间证书(非必须)。 选择好了 之后,点击save。
添加好证书后,我们回到Proxy hosts页面,开始添加反向代理服务。如何设置如下图:
其中:domain names 是指你反代后,外网访问的域名。(这里请不要填写端口或者http之类的)
scheme 是指你的内网指向目标的协议是http/https,请根据情况正确选择。(这里是指内网或者你要反代到达的其他目标)
forward hostname/ip是你指向的目标(内网Ip或者域名等)
forward port 是指你指向目标的端口
下方的三个按钮,目前我知道的也不多,请自行了解。
access list 是你可以设置用户名和密码,来控制谁可以访问你的反向代理的网站。(非常方便的提供给没有用户控制的页面的程序,例如rt。可以节约非常多的功夫,具体的添加等下再讲)
选择窗口ssl标签,选择你添加的对应的证书。然后把下方的force ssl (使用https的意思)点亮,http/2 support 大概的页面压缩技术的支持,hsts 大概是增强安全性的。(自己多尝试吧,我也不是很清楚)。
然后点击save,一个反向代理就这样设置好了。
随后你就可以通过访问https://“你的设定的域名”:18443 (假定你设置的端口转发是18443转发到反向代理服务程序的18443端口上,当然你也可以设置成其他端口)。
反向代理的简单教学在这里就完成了。
补充:access list的设置见下图:
补充说明,name只是你自己看的起区分作用的。下面的用户名和密码随意设置。
设置好之后,你就可以在反向代理的下拉列表里面看到他们的身影,选择你需要的 就OK。因为非常简单,所以就话不多说。
评论(8)
没成功,看来是我太蠢了。
可以来加群询问,这个还需要有泛域名解析和泛域名证书配合的。
群在哪里?
这是个好东西
可惜不支持dns验证,不好弄SSL了
我布置后一些应用可以。但像unraid和nextcloud打不开,用路由端口映射都可以,用反代理就打不开提示token error or request failed,在unraid装不装证书都不行。
你可以理解为这个容器是一个nginx的通用模板,适用于大多数服务,但是总有一些特殊的会出现问题。
成功了,docker都正常代理了,但是unraid主机代理不成功,打开网址就是502 Bad Gateway,但是端口映射以后,把外网域名和端口加进去,又可以代理成功,见鬼了