使用Nginx Proxy Manager为NAS构建图形化安全入口:从部署到泛域名证书配置
在国内搭建NAS时,如何将众多内网服务优雅地整合到一个统一的域名之下,同时兼顾便捷性与安全性,反向代理技术堪称一把得力的瑞士军刀。许多用户习惯于使用Lucky,它确实轻巧易用;但如果你遇到一些特殊场景,需要Nginx级别的功能来处理,那么Nginx Proxy Manager(后文简称NPM)将是一个可靠的选择。
本文的目的并非要“二选一”地替代Lucky,而是提供另一条同样高效的技术路径。通过NPM,你同样能够获得一个安全的、可从外网访问的、支持证书自动化的标准化入口,从而将Jellyfin、Photoprism、Home Assistant、私有博客等各类服务从繁杂的端口号中解放出来,井然有序地挂载在你的专属域名之下。
就个人使用习惯而言,国内的NAS环境我倾向于使用Lucky,而在海外的VPS上则会选择NPM。此前虽然分享过NPM的相关内容,但主要针对VPS场景,因此特此补充针对NAS的部署指南。同时,也因为后续计划分享的项目会用到NPM,撰写此篇也能方便下篇文章及未来的引用。
考虑到国内特殊的网络环境,本文默认读者已经完成了DDNS(动态域名解析)的配置。在“拥有独立域名并使用自托管DNS服务(如阿里云、腾讯云或Cloudflare),且服务运行在NAS上”的典型场景中,ddns-go 是目前最为省心且通用的开源DDNS解决方案,相关教程已非常丰富。如有需要,后续可再单独补充其使用流程。
什么是Nginx Proxy Manager?
让我们简单了解一下NPM:
Nginx Proxy Manager 是一款基于 Docker 的可视化反向代理与证书管理面板。它能帮助你将家庭或办公室网络中的各类 Web 服务统一接入到公网或内网域名下,支持一键签发与续期 Let’s Encrypt 证书,几乎无需手动编写复杂的 Nginx 配置文件。这款工具非常适合追求“图形化操作、减少折腾、稳定运行”的 NAS 用户和自建服务爱好者。
简而言之,它就是图形化操作界面的 Nginx。
准备工作:域名与API密钥
我将使用一个之前购买的备用域名进行演示。

首先,需要前往你的域名注册商平台(以阿里云为例)申请API密钥,用于后续自动化申请SSL证书。由于国内网络环境通常无法使用80、443等标准端口进行证书验证,因此必须采用DNS验证的方式。
下图展示了在阿里云平台寻找API密钥管理页面的路径。

创建AccessKey ID和AccessKey Secret,请务必将这两项信息妥善保存备用,因为页面关闭后将无法再次查看完整密钥。

部署流程:在威联通NAS上部署NPM
本文以威联通(QNAP)NAS为例进行演示,但其方法基本适用于所有品牌的NAS,只需根据实际情况调整文件映射的目录路径即可。
(顺带一提,威联通刚发布的新品 TS-464C,终于上手体验了~性价比确实不错!)


)
推荐使用Docker Compose进行部署,配置文件如下:
services:
app:
image: jc21/nginx-proxy-manager:latest # 如需中文界面,可使用镜像:chishin/nginx-proxy-manager-zh:release
container_name: npm # 容器名称可自定义
restart: always
environment:
TZ: Asia/Shanghai # 设置时区
DISABLE_IPV6: "true" # 国内IPv6网络可能不稳定,建议先关闭
volumes:
- /share/Container/npm/data:/data
- /share/Container/npm/letsencrypt:/etc/letsencrypt
ports:
- "81:81" # 管理面板端口(建议仅在局域网内访问)
- "8442:80" # 对外服务的HTTP端口(使用非标准端口)
- "8443:443" # 对外服务的HTTPS端口(使用非标准端口)
需要说明的是,中文版镜像并未修改后端核心代码,它仅是基于官方镜像替换了前端界面语言。因此,中文版本在功能上与官方版本完全一致,仅存在界面文字的差异。

在端口映射配置中,冒号左侧的三个端口(81, 8442, 8443)都可以根据你NAS的实际情况,替换为任何未被占用的端口。
- 81端口用于访问NPM的管理后台,通常不建议直接将其端口转发到公网。如果像我一样需要远程进行初始配置,可以临时开启,配置完成后建议禁用或删除该条端口转发规则。
- 8442和8443端口则必须通过路由器设置端口转发,映射到公网,以便外部访问你所代理的服务。

使用展示:配置反向代理与SSL证书
按照上述Docker Compose配置部署完成后,在浏览器中输入 你的NAS内网IP:81 即可访问NPM的管理界面。默认登录账户为 admin@example.com,默认密码为 changeme。

首次登录时,系统会提示修改默认的登录邮箱和密码。这个邮箱地址后续会用于接收SSL证书到期提醒等信息。可以填写一个符合邮箱格式的地址,其真伪并不重要,关键是自己要能记住。

分别输入旧密码、新密码并确认新密码,点击保存即可完成修改。

进入管理面板首页后,点击下图红框内的“Proxy Hosts”标志。其他几个选项(如Redirection Hosts, Streams, 404 Host)分别用于重定向、TCP/UDP转发和自定义404页面,中文版界面会有相应翻译。

在接下来的页面中,点击“Add Proxy Host”按钮来添加一个新的反向代理规则。

现在开始逐步配置:
- Details标签页:填写你要使用的域名(例如
service.yourdomain.com)。 - 在“Forward Hostname / IP”中,填写内网中实际运行服务的设备IP地址或主机名。
- 在“Forward Port”中,填写该服务的内部端口。
- 根据后端服务实际使用的协议,选择“Scheme”为HTTP或HTTPS。
- “Cache Assets”选项用于开启静态资源缓存,对于纯静态网站建议开启,其他类型服务可按需选择。
- 点击“Save”保存配置。

至此,基本的域名与内网服务绑定已经完成。

此时,通过你配置的域名加上映射的HTTP端口(如 https://service.yourdomain.com:8442)已经可以访问到后端服务,但浏览器会显示“不安全”警告,因为尚未配置SSL证书。

接下来,我们点击该代理主机条目右侧的“Edit”按钮,进入“SSL”标签页来配置证书。

温馨提示:在为NPM配置好所有规则后,强烈建议在路由器上删除对81管理端口的公网转发规则,以增强安全性。
✅ 场景一:为单个子域名申请SSL证书
本小节演示为某一个特定的子域名单独申请证书。如果你计划将NPM作为长期使用的主要反向代理工具,并且有多个子域名需求,建议直接阅读下一小节的“泛域名证书申请”,那样效率更高。

在SSL标签页进行如下配置:
- SSL Certificate:选择 “Request a new SSL Certificate”。
- Domain Names:确认已自动填入你之前设置的域名。
- Force SSL:开启(强制使用HTTPS)。
- HTTP/2 Support:开启。
- HSTS Enabled:建议开启(强制浏览器使用HTTPS)。
- HSTS Subdomains:仅当确定所有子域名都支持HTTPS时才开启,否则请保持关闭。
- Email Address for Let’s Encrypt:填写你的邮箱。
- I Agree to the TOS:勾选同意服务条款。
- 由于常规端口不可用,必须勾选 “Use a DNS Challenge”,然后在“DNS Provider”中选择你的域名服务商(如阿里云),并填入在准备工作中获取的AccessKey ID和Secret。
填写完毕后点击“Save”。系统会自动通过DNS验证方式申请证书,此过程可能需要等待一两分钟。申请成功后,界面会如下图所示。

现在,使用域名加上HTTPS端口(如 https://service.yourdomain.com:8443)访问你的服务,可以看到浏览器地址栏的“不安全”警告已经消失,整个反向代理流程圆满结束。

✅ 场景二:申请泛域名SSL证书
如果你有大量子域名需要管理,申请一张泛域名(Wildcard)证书是更高效的选择。进入NPM管理面板的“SSL Certificates”板块,点击右上角的“Add SSL Certificate”按钮。

)
在证书申请页面:
- 勾选“Use a DNS Challenge”。
- 在“Domain Names”中填写你的根域名和泛域名,例如
yourdomain.com, *.yourdomain.com,用逗号分隔。 - 填写邮箱地址。
- 选择DNS服务商,并填入对应的API密钥(ID和KEY)。
- 勾选同意服务条款。
- 点击“Save”提交申请。

申请成功后,证书列表中将出现新颁发的泛域名证书。

此后,当你为任何新的子域名创建反向代理时,都可以直接在SSL标签页选择这张已有的泛域名证书,无需再为每个子域名单独申请,极大简化了配置流程。

总结
无论是选择 ddns-go + Nginx Proxy Manager 的组合方案,还是使用 Lucky 这样的一站式工具,最终都取决于你的具体需求和技术偏好。希望本篇教程能为你管理NAS服务提供一种清晰、安全的实现路径。
感谢阅读,教程至此结束。