Nginx Proxy Manager 从安装到使用:手把手完整教学(含反向代理 + HTTPS)

在智能家居、NAS、自建服务越来越流行的今天,如何安全、稳定、便捷地把内网服务暴露到公网,成为许多人要面对的问题。

没错,你可以自己写 Nginx 配置,但对很多人来说太复杂。

于是 Nginx Proxy Manager(简称 NPM) 出现了—— 一个拥有可视化界面的 Nginx 管理工具,让你像点外卖一样设置反向代理、HTTPS 证书。

本文将从 零基础 带你完成:

  • 安装 NPM
  • 配置反向代理
  • 配置 HTTPS(自动申请、自动续期)
  • DNS 方式申请证书
  • 常见问题解决

适合 NAS、自建服务器、群晖、OpenWrt、云服务器、小白和专业开发者。

前面写了关于 DDNS 和 WOL 的文章,现在我想通过 NPM 把 NAS 上的相关服务暴露到公网。

📌 一、什么是 Nginx Proxy Manager?

NPM 是一个对 Nginx 进行“可视化管理”的工具,特点:

  • 图形化界面设置反向代理
  • 内置 Let’s Encrypt,支持 HTTPS 证书自动申请与续期
  • 支持 HTTP、HTTPS、TCP、UDP 代理
  • 配置简单,适合家庭服务器/NAS

你可以把它理解为:

把复杂的 Nginx 配置文件,变成可视化的网页管理系统。

📌 二、Nginx Proxy Manager 适用场景

NPM 最常见的用途包括:

  1. 内网服务暴露公网
  • 群晖套件(File Station、NAS 管理)
  • DDNS-GO WebGUI(带网页界面)
  • WEBDAV(文件分享)
  • WOL 页面(唤醒局域网主机)
  • Jellyfin (视频播放)
  1. 多域名反向代理

例如:

nas.xxx.com → 群晖后台
ddns.xxx.com → DDNS-GO WebGUI
webdav.xxx.com → WEBDAV 页面
wol.xxx.com → WOL 页面
media.xxx.com → Jellyfin (视频播放)
  1. 给服务加 HTTPS

自动申请证书,无需手动配置 Nginx。

📌 三、Nginx Proxy Manager 安装(Docker 版)

最推荐的方式:Docker + docker-compose

1)创建目录

$ mkdir -p /opt/npm
$ cd /opt/npm

2)创建 docker-compose.yml

version: '3'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: npm
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

3)启动

$ docker compose up -d

几秒后访问:

👉 http://服务器IP:81

出现登录页面。

📌 四、初次登录

输入邮箱和密码, 点击 SAVE,初始账户就创建了

Email: admin@example.com
Password: changeme

登录后进入主界面。

📌 五、基础使用:创建一个反向代理

下面以访问本地 DDNS-GO WebGUI 为例。

目标

https://ddns.xxx.com 访问到 内网 http://192.168.1.50:9876

步骤 1:添加 Proxy Host

进入:

Hosts → Proxy Hosts → Add Proxy Host

填入信息:

① Domain Names
ddns.xxx.com

② Forward Hostname / IP
192.168.1.50

③ Forward Port
9876

alt text alt text 然后点 Save

📌 六、配置 HTTPS(自动申请证书)

回到 Proxy Hosts 列表 点击对应域名 → Edit → SSL 标签

选择:

Request a new SSL Certificate(申请 Let's Encrypt)

勾选:

Force SSL(强制跳转 HTTPS)

HTTP/2 Support

HSTS Enabled(可选)

填邮箱

点击 Save

如果 DNS 正确解析到服务器,证书将自动申请成功。

📌 七、DNS 自动验证申请证书(推荐)

  1. 如果你无法开 80 端口(如家宽),必须使用 DNS 方式申请。 路径:
Certificates → Add Certificate → Let’s Encrypt via DNS
  1. 选择 DNS 服务商:Cloudflare、阿里云 、DNSPod 等

  2. 填入 API Key

  3. 优点:

  • 🔥 不需要开放 80 或 443 端口
  • 🔥 内网穿透也能申请
  • 🔥 万能模式,最稳定

强烈推荐 DDNS + DNS Challenge 搭配使用。

我用的是阿里云 DNS,所以配置如下: alt text

📌 八、常见问题与解决方案

  1. 请证书失败,提示 Cannot connect to HTTP 或者 是 Invalid Error

原因:

  • 80/443 被运营商屏蔽, 一般是这个原因
  • 路由器未开放端口
  • 公网 IP 不是真公网

解决方案:

  • 改用 DNS Challenge
  • 使用 frp、tailscale、zerotier 等外网映射
  1. 访问域名显示 502 Bad Gateway

检查:

  • 服务是否运行
  • 内网 IP 是否正确
  • Websocket 是否勾选
  • 防火墙是否允许对应端口
  1. 群晖端口占用 80/443 和 NPM 冲突

两种解决方案:

  • 方案 A:改变群晖的 Web 端口
  • 控制面板 → 网络 → DSM 设置
  • 把 80 / 443 改为其他端口。
  • 方案 B:NPM 使用其他端口,再在路由器做端口转发

例如将 NPM 的 80 改到 18080。

📌 九、NPM 使用建议

  • 不要让 NPM 和其他服务抢 80/443
  • 推荐搭配 Cloudflare 、DDNS
  • 使用 DNS Challenge 更稳定
  • 如果是家宽,优先确认是否有公网 IP
  • 不要把 NPM 放在公网服务器代理内网服务(安全风险)

📌 十、总结

Nginx Proxy Manager 让“反向代理 + HTTPS”这件本来非常复杂的事情,变得:

  • 无需写配置文件
  • 点鼠标就行
  • 自动申请证书
  • 适合 NAS / 群晖 / 家宽等各种环境

这是目前家庭服务器、自建服务、NAS 圈子中最流行的反向代理方案之一。

我自己的路由器设置

因为我是家宽,虽然有动态的外网IP,但是无法使用80和443端口。

  • 我是把999端口映射到NPM的443端口, 这样把外网的所有https流量都通过流量转发到了NPM的443端口。
  • 如果你NPM所在的服务器443端口被占用,则可以改变NPM的443端口映射到其他端口。
  • 比如1443端口, 然后在路由器做端口转发,把外网的999端口映射到1443端口。
  • 然后通过域名前缀判断流量是要转发到哪个服务。

--完--