飞牛NAS部署Nginx Proxy Manager:反向代理利器
飞牛NAS(fnOS)作为一款面向家庭和中小型企业的国产NAS系统,凭借其简洁的界面和强大的Docker支持,正在吸引越来越多的用户。今天,我们不讲存储,不讲影音,来聊聊如何利用Docker在飞牛NAS上部署一个堪称“神器”的反向代理工具——Nginx Proxy Manager(简称NPM)。有了它,你可以通过优雅的域名或子域名访问内网的各种服务,再也不用记难看的“IP:端口”了。
为什么要用Nginx Proxy Manager?
在传统方案中,配置Nginx反向代理需要编写复杂的server块配置,还要处理SSL证书的申请和续期,对新手极不友好。Nginx Proxy Manager则提供了一个清爽的Web界面,让你通过鼠标点击就能完成以下操作:
- 可视化配置代理转发规则(支持HTTP、HTTPS、TCP、UDP)。
- 免费申请和自动续期Let‘s Encrypt SSL证书。
- 启用访问控制列表(如IP白名单、Basic Auth)。
- 实时查看访问日志和错误日志。
- 自定义404页面、强制HTTPS跳转等高级功能。
对于飞牛NAS用户而言,这意味着你可以将NAS上的Jellyfin、qBittorrent、PhotoPrism、Home Assistant等所有服务统一暴露在一个域名下,并通过子路径或子域名进行区分,安全又美观。
第一步:在飞牛NAS上准备环境
飞牛NAS的Docker管理界面非常直观。请确保你的fnOS系统版本较新,且已开启Docker服务(通常默认开启)。
打开飞牛NAS的「Docker」应用,进入「镜像」页面,在搜索框中输入jc21/nginx-proxy-manager,选择最新版本(通常是latest或2.x)并点击下载。由于镜像约300MB,请耐心等待。
第二步:创建并配置容器
镜像下载完成后,点击「创建容器」。这里有几个关键配置需要特别注意:
- 端口映射:NPM默认需要映射三个端口。
80:用于HTTP代理入口(必须映射,否则无法转发)。443:用于HTTPS代理入口(必须映射)。-
81:这是NPM的管理面板端口(必须映射,用于访问Web UI)。 在飞牛NAS中,建议将宿主机的端口也设为80、443、81,除非这些端口已被占用。例如,如果NAS的80端口被其他服务占用,可映射为8080:80,但后续访问代理服务时需加上端口号,略显不便。 -
数据卷挂载:务必挂载一个数据卷用于持久化数据库和证书。
- 在「存储」设置中,点击「添加」,选择NAS上的一个文件目录(建议在Docker目录下新建
npm/data),容器路径填/data。 -
再添加一个目录用于存放SSL证书(可选,但推荐),容器路径填
/etc/letsencrypt。如果你没有预先创建目录,飞牛NAS会提示自动创建。 -
环境变量:通常无需额外设置,保持默认即可。如果你需要修改数据库类型(默认SQLite足够),可自行研究。
点击「创建」后,容器会自动启动。在浏览器中访问http://你的飞牛NAS_IP:81,即可看到NPM的登录界面。
第三步:初始化管理员账户
首次访问会显示“Sign in”页面,但你需要先点击页面底部的“Create Admin User”链接来创建管理员。
输入你的邮箱和强密码,点击提交。系统会提示“User created successfully”,然后自动跳转到登录页。使用刚创建的账户登录,进入NPM的主界面(Dashboard)。
第四步:实战配置第一个反向代理
假设你已经在飞牛NAS上运行了一个Jellyfin媒体服务器,端口为8096。现在,我们想通过http://jellyfin.yourdomain.com来访问它。
- 在NPM主界面左侧菜单点击「Hosts」,然后选择「Proxy Hosts」。
- 点击右上角的「Add Proxy Host」按钮。
- 在「Domain Names」输入框中填写你的完整域名,例如
jellyfin.example.com。如果你没有域名,也可以直接填写NAS的IP地址和端口(不推荐,但可用于测试)。 - 在「Forward Hostname / IP」填写
192.168.1.100(你的飞牛NAS内网IP,或直接填127.0.0.1也可,因为NPM容器与NAS共享网络栈)。在「Forward Port」填写8096。 - 其他选项保持默认。如果你想启用WebSocket支持(对某些应用如实时聊天、终端很重要),可以打开「Websockets Support」开关。
- 点击「Save」。
保存后,你会看到该代理条目出现在列表中,状态为“Online”。现在,在你的浏览器中访问http://jellyfin.example.com,如果域名解析正确,就能成功打开Jellyfin界面。是不是比记忆http://192.168.1.100:8096舒服多了?
第五步:配置SSL证书(HTTPS)
HTTP毕竟不安全,我们给它加上SSL。在NPM中,SSL配置极其简单。
- 在代理列表中找到刚才创建的条目,点击右侧的「Edit」。
- 切换到「SSL」标签页。
- 选择「Request a new SSL Certificate」。
- 勾选「Force SSL」和「HTTP/2 Support」。在「Let‘s Encrypt」中,确保勾选了「Agree to Terms of Service」。
- 在「Domain Name」中确认是你的域名,点击「Save」。
- 等待几秒到几十秒,NPM会自动向Let's Encrypt申请证书并配置好。如果成功,你会看到证书有效期和签发信息。
现在,访问https://jellyfin.example.com,浏览器地址栏会显示小锁标志,全程自动加密,且证书到期会自动续期,完全无需你操心。
进阶玩法:使用子路径和访问控制
你可能会想,如果只有一个域名,怎么代理多个服务?NPM支持通过子路径区分,但更推荐使用子域名(如jellyfin.xx.com、qb.xx.com)。如果你没有泛域名解析,也可以使用子路径,例如https://xx.com/jellyfin。在NPM中,只需在「Domain Names」里填xx.com/jellyfin,转发目标不变即可。不过要注意,部分应用(如Jellyfin)对子路径支持不佳,可能需要额外配置应用本身的Base URL,所以更稳妥的方案还是子域名。
另外,NPM的「Access Lists」功能非常实用。比如你希望某个代理只允许家里IP访问,可以在「Access Lists」中创建一个白名单列表,然后在代理的「Access List」选项中选择它。这样,外部IP访问会被拒绝,极大地提升了安全性。
常见问题与解决建议
如果配置后无法访问,请按以下顺序排查:
- 确认NPM容器运行正常,端口映射正确(特别是80和443)。
- 确认你的路由器已做端口转发(如果从外网访问),将公网IP的80/443端口转发到NAS的对应端口。
- 检查域名解析是否指向了正确的公网IP或NAS IP。
- 查看NPM的日志(容器日志),通常有明确的错误提示。
- 如果代理服务本身是HTTP,但NPM设了HTTPS,请确保目标服务不需要修改Host头,必要时可在「Advanced」标签页自定义Nginx配置,例如
proxy_set_header Host $host;。
总结
Nginx Proxy Manager将复杂的Nginx配置封装成了直观的图形化操作,配合飞牛NAS的Docker功能,让你在几分钟内就能搭建出一个专业级的反向代理网关。无论是家用内网服务整合,还是借助公网IP和域名对外提供安全的访问入口,NPM都能轻松胜任。它不仅是技术爱好者的玩具,更是提升NAS使用体验的必备利器。希望这篇教程能帮你顺利部署,从此告别“IP+端口”的混乱时代。如果你在部署中遇到问题,欢迎在评论区留言交流。
暂无评论,来说两句吧