NPM 设置反向代理和泛域名证书

终于不用再续费证书了

October 15, 2026 via CLOUDUH

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 的支持

测试一下,没有问题了