在国内玩 NAS,想把一堆内网服务优雅地收口到一个域名下,既要省事、又要安全,反向代理就是那把顺手的瑞士军刀。很多朋友习惯用 Lucky,确实轻巧好用;但如果你一些特殊需求,需要Nginx 之类来解决,那么Nginx Proxy Manager会是一个靠谱的选择。(后文简称NPM)
写这篇文章并不是要「二选一」地替换 Lucky,而是提供另一条同样通畅的方法:你同样会得到一个内网安全、外网可达、证书自动化的标准化入口,把 Jellyfin、Photoprism、Home Assistant、私有博客等各类服务从杂乱的端口中打捞出来,整齐地挂到你的域名之下。
以我的个人习惯来说,国内NAS一般使用Lucky,海外VPS则会选择NPM。
之前写过NPM分享,但只是针对VPS,因此补充NAS篇。也因为要分享的下一个项目会用到NPM,方便下篇以及后续引用吧~
鉴于国内网络环境,本文默认大家已经做好了DDNS。在“独立域名 + 自己托管 DNS(阿里云/腾讯云/Cloudflare)+ 跑在 NAS 上”的场景里,ddns-go 是目前最省心、最通用的开源DDNS方案,教程也挺多了吧?不过如果有需要,我会再补一篇相关的使用流程。
项目介绍
固定流程了,简单介绍下NPM。
Nginx Proxy Manager 是一款基于 Docker 的可视化反向代理与证书管理面板,帮你把家里或办公室网络中的各类 Web 服务统一接入到公网或内网域名下,支持一键签发/续期 Let’s Encrypt 证书,几乎不需要你手写 Nginx 配置。适合想要“图形化、少折腾、能稳定跑”的 NAS/自建党用户。
说白了就是图形化的 Nginx 。
准备工作
之前买的一个备用域名,就拿它来做演示。
先去你域名所在平台申请密钥,用于后续申请证书。因为国内环境走不了常规端口,所以要这么干。
阿里云的为大家指个路。
创建,这两项保存好备用,关掉后就不会再显示。
部署流程
还是以威联通NAS为例,不过基本适配所有品牌,改改文件映射目录即可。
(看看威联通刚发布的新品 Qu805-N355,终于拿到咯~3k6香爆!)
代码如下:
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(非常用端口)
中文镜像并没有重新构建后端代码,中文镜像基于官方镜像替换前端代码来实现的,所以中文版本的全部功能与官方版本完全相同,只是显示界面的文字不同的区别。
冒号左侧的三个端口皆可替换成NAS未占用端口。
81
是管理面板,一般不建议直接转发到公网,如果像我一样远程配置可以先开一会儿,搞定后再停用或删掉~
8442
、8443
两个端口则一定要转发到公网~
使用展示
按照上面代码部署完毕后,浏览器输入 NAS_IP:81 即可访问界面进行配置。
默认账户:admin@example.com
默认密码:changeme
初次登陆提示修改初始登录邮箱和密码。
这个邮箱后面用来发送证书提醒。若随便填写的话,符合邮箱格式就行,真伪不重要,另外咱们得能记得住~
旧密码、新密码、确认新密码,保存即可。
来到首页,点击下图红框标志。其他几个是跳转、转发和兜底,汉化版应该有翻译。
下面点哪里都可以,添加反向代理。
逐步来设置。
内网服务是 http 就选 http;若后端自己跑了 https,就选 https。IP和端口部分,填写后端服务的主机名或内网 IP,简单说就是这个IP能成功访问服务就行。Cache Assets是静态资源缓存,一般建议纯静态站开启,大家按需求选择。点击保存。
可以看到,这时候已经完成了绑定。
通过刚才配置的域名+8442,就能访问服务。不过通过该域名访问可以看到,显示不安全。
接着点击开始配置证书~
当我们为NPM配置完毕后,建议删掉上面路由中81
端口的转发~
单个域名证书申请
本小节情况是针对某一个子域名单独申请证书。该小节结束后,会再演示泛域名证书以应多,如果NPM常驻为主要反代工具,建议直接进行泛域名申请~
Force SSL:开
HTTP/2 Support: 开
HSTS Enabled: 建议开(浏览器强制用 HTTPS)
HSTS Subdomains:只有当所有子域都走 HTTPS 时再开,否则先关
Email Address for Let’s Encrypt:填你的邮箱
I Agree to the TOS: 勾上
因 80 等常规端口不可用,勾 Use a DNS Challenge,接着选择服务商,填入上文准备工作中的ID和KEY
按照上面的提示,填写后点击保存。应该要等一小会儿。成功后如下图所示。
此时输入域名+8443端口,即可访问服务,可以看到不安全标志已经消失,反代流程结束~
泛域名证书申请
来到证书板块,如图点击右上角。
跟上面一样,填写根域和泛域,以逗号间隔。勾选 Use a DNS Challenge,填写邮箱,选择DNS服务商,填入ID和KEY,同意条约后保存即可。
申请完毕。
后续我们再创建新的反代,那就方便多啦~
最后
ddns-go + NPM,或者一站式的Lucky,就看大家需求了。
感谢观看,本文完~
评论区