最近搭了个memos笔记服务,但是这个小服务本身很精简不包含https相关设置,所以打算用NPM套一层实现SSL访问
Docker安装NPM(Nginx Proxy Manager)
先pull镜像:
docker pull jc21/nginx-proxy-manager:latest
好了之后再run:
docker run -d -v ~/nginx-proxy/letsencrypt:/etc/letsencrypt -v ~/nginx-proxy/data:/data -p 80:80 -p 5081:81 -p 443:443 --name npm jc21/nginx-proxy-manager:latest
要映射出来的主要就80
和443
端口,分别对应http和https服务,自己家用服务器别想了,电信联通基本不会给家用宽带这个端口的,我这个是阿里云99服务器上直接搭的。81
端口是NPM的后台WebUI界面,我故意映射到了5081端口自用
另外就80
和443
端口很有可能被已有默认服务占用,如果提示占用可用lsof -i:443
检查一下
登录NPM并配置
- 通过 服务器IP:5081(刚才设置的端口),可以访问NPM后台管理平台
默认帐户:admin@example.com
默认密码:changeme
- 申请SSL证书
在SSL Certificates
页面里点Add SSL Certificate
我选择使用DNS的认证方式,它自带有我买域名的服务商阿里云的相关设置,填入自己账号的key后即可签发*.winotmk.com
证书
选择DNS还有个好处就是即便NPM服务没用80/443端口也可以完成认证
- 添加代理规则
选Proxy Hosts
里的Add Proxy Hosts
在Details
里:
第一行的Domain Names
是最后要访问的域名
第二行红框里则是源网站的信息,因为自身不带https所以选http
,这个域名本身是我家里的群晖DDNS域名,勾可全选
然后在SSL标签页选择刚才申请的证书,下面选项我全选
好了npm的设置就此结束啦
现在我们还需要将刚才代理的域名设置一下解析
设置dns解析
在买域名的地方设置一条A记录
记录值当然就是我这台ECS服务器的公网IP地址辣,等dns刷新后就能愉快地用上面代理的域名以SSL访问了