NPM 设置反向代理和泛域名证书
Abstract
反向代理的目的有几个:(1)拜托阿里云 SSL 证书只有 3 个月的痛苦;(2)减少路由器对外开放的端口;(3)把一些常用的服务改一个好记得名字。
1 安装 NPM
我选择在 Portainer 中部署,选择 Stacks → Add stack
services:
nginx-proxy-manager:
image: jc21/nginx-proxy-manager:2.16.0
container_name: npm
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8181:81"
environment:
TZ: Asia/Shanghai
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
volumes:
npm_data:
npm_letsencrypt:
注意修改对应的端口,管理端口建议设置为 1024 以上的不冲突的端口
2 设置 NPM 泛域名证书
2.1 获取阿里云 AccessKey
进入阿里云 RAM 访问控制工作台,创建一个新用户。

务必勾选使用永久 AccessKey

保存 AccessKey 和其密码,注意该页面关闭之后就找不到了

进入新创建的用户,进入权限管理,添加 DNS 权限:
AliyunDNSFullAccess

2.2 添加 npm 证书
在 npm 界面中,找到证书管理,添加 DNS 证书。
注意密钥类型要选择 RSA,粘贴刚才保存好的 AccessKey 和密钥,传播时间填 120,保存,等待一段时间就成功了。

3 添加反向代理
在 npm 中添加反向代理,属于想要自定义的域名,填写 IP 和端口,勾选 Websockets 支持。
对于 http 还是 https,关键得看你的网页服务支持什么,如果不确定就先选择 http,一般情况下都是可以访问的。

在 SSL 中添加刚刚添加的证书,勾选强制 SSL 和 HTTP/2 的支持

测试一下,没有问题了
