最近从黑群晖转到了unraid,然后再unraid里面虚拟了黑群晖,通过acme脚本申请泛域名证书,反向代理依然用的群晖的。本来一切正常,但最近突然发现申请的泛域名证书出了问题,自动恢复到了群晖默认证书,导致各种服务都因证书无法访问了,所以打算将反代和证书申请从群晖中剥离出来,然后就看到了NginxProxyManager(简称npm)这个应用,这里将自己的配置过程记录一下
NginxProxyManager安装
由于使用docker进行安装,所以不同系统之间其实都差不多,这里以unraid为例。
-
在unraid的app中搜索NginxProxyManager,点击安装(我这里是已经安装了)
-
填写对应端口,大家可自行选择端口
- 点击Apply即可安装成功
NginxProxyManager配置
- 访问
http://YourIP:7818
,打开管理页登录,默认账号admin@example.com
,密码changeme
,登录后会提示修改账号密码,自行修改即可
- 申请泛域名证书
- 点击
SSL Certificates
,然后点击Add SSL Certificate
,选择Let's Encrypt
类型
- 填入自己的域名,泛域名需要填两个,一个
*.domain
,一个domain
,DNS厂商获取凭证大家自己搜一下,我这里使用的Aliyun
,所以凭证为access_key
和access_key_secret
-
点击保存,如果前面填的凭证都正确,一般证书就能申请成功了
- 添加反向代理
-
点击
ProxyHosts
,然后Add Proxy Host
-
填入自定义二级域名和对应服务的内网访问地址,我的unraid访问地址为
http:192.168.1.1:80
,所以填入后如图所示
-
在SSL中选择刚申请的证书,并勾选
Force SSL
-
(可选)配置自定义选项
对于大多数服务来说,点击保存后就可以了,不过有些服务比较特殊,像unraid,按照刚才配置的方法,是无法访问的。因为unraid在登录时重定向到login
会丢失端口号,导致访问失败,所以针对这种服务还需要填入以下配置。其中的http://192.168.1.1:80
换成自己的服务地址
location / {
proxy_pass http://192.168.1.1:80/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
- 点击保存即可,如果需要反向代理其他服务,则添加其他
ProxyHost
- 访问测试,首先要做好DDNS,将自己的域名解析到自己的服务器上,然后将前面配置的https端口映射到外网,我这里时映射
8888
端口到外网,之后访问https://unraid.YourDomain:8888
,可以看到链接前面已经加锁了
- 到此,大功告成
网友评论