Nginx 是一款优秀的 HTTP 服务器,同时提供了丰富的功能,其中最常使用的就是反向代理,可以通过配置让我们使用不同的域名在同一个端口访问不同的服务。而 Nginx Proxy Manager 是一个可以通过在 Web UI 中配置内部的 Nginx 实现类似我们所需要的功能的工具。

nginx-proxy-manager

为什么替换

我部署的服务虽然不多,但部分服务必须 HTTPS,比如 Bitwarden。所以我就通过 Let‘s Encrypt 申请了泛域名证书,于是我所有的服务就都支持了 HTTPS 。但是 Let‘s Encrypt 的证书有效期只有 3 个月,想要继续使用就要定期更新。其实在机器上写个定时任务,周期性续期证书就没问题了,但是我发现我每次更新下来的证书都带有个可爱的后缀-1/-2/-3...,这样子也不是不能搞,但是太麻烦了。

最近网上冲浪🏄‍♂️的时候发现了这个工具,它最吸引我的有两点:

  1. 在 Web UI 中配置就能实现和 Nginx 一样的功能
  2. 支持 Let’s Encrypt 在线申请

本着折腾的原则,我决定在我的机器上部署一个🔨

替换过程记录

  • 关闭原有的 Nginx

因为为了保持和原来的体验一致,那么肯定是要在 :80/:443端口进行反代,所以一定要关闭原有的 Nginx。因为我所有的服务都是 Docker 部署的,所以关闭命令很简单

docker stop nginx
  • 部署 Nginx Proxy Manager

参考官网教程

  • 在 Web UI 中配置

通过http://localhost:81访问后台配置页面

后台配置页面

点击 Proxy Hosts => Add Proxy Host 即可配置反向代理,规则参照原 Nginx 配置文件配置(这里支持泛域名配置)

配置反向代理

点击 Save 就完成了第一个域名的配置,此时访问我们的配置的域名,请求就会被发送发位于 198.168.0.2:5000 的服务上。

配置 SSL 证书(可选)

在 SSL Certificates 选项卡中点击 Add Certificate 按钮,可以选择上传自己已有的证书,也可以选择从 Let’s Encrypt 重新申请,这里选择重新申请。

配置 SSL 证书

Nginx Proxy Manager 支持无侵入式的 DNS 验证方式申请证书,而且支持多家 DNS 服务商。

如上图,输入域名(支持泛域名)按要求填写自己的 DNS 服务商的 Token/Key 之类的,点击 Save 就完成了第一张证书的申请,接下来就把证书配置到刚刚配置好的 Proxy Host 上吧。

证书管理

回到 Host 管理,选择要配置的服务,切换到 SSL 选项卡,选择刚申请的域名即可完成配置。

配置 SSL 证书


到这里就完成了一个支持 HTTPS 的服务的配置,重复上面的操作(如果申请的泛域名证书后续则不用继续申请证书,只要保证在证书的有效范围即可)就可以完成全站的替换。