Docker 玩法

飞牛NAS部署Nginx Proxy Manager:反向代理利器

在飞牛NAS(fnOS)的Docker生态中,反向代理工具是连接容器服务与外网访问的关键桥梁。今天,我们深入聊聊如何部署Nginx Proxy Manager(简称NPM),这款集可视化配置、自动SSL证书、流量转发于一体的神器,能让你彻底告别繁琐的Nginx配置文件。

为什么选择Nginx Proxy Manager

很多朋友用过Traefik或Caddy,但NPM的核心优势在于它的图形化管理界面。你不需要记住复杂的location规则,只需在网页上填写域名、端口、协议,点几下鼠标就能完成代理设置。同时,它内置了Let‘s Encrypt证书的自动申请与续期,对新手极其友好。在飞牛NAS上,我们可以借助其Docker容器能力,将NPM作为所有Web服务的统一入口。

准备工作

首先,请确保你的飞牛NAS系统版本在0.8.4以上,且Docker服务正常运行。我们需要准备两个关键端口: - 80:用于HTTP流量和Let’s Encrypt证书验证 - 443:用于HTTPS流量 - 81:NPM管理界面端口(你可以自定义,但建议保持默认)

如果你的NAS上已有其他服务占用80或443端口,请先停止它们,或通过飞牛的应用中心调整端口映射。

部署NPM容器

打开飞牛NAS的Docker管理界面,在「镜像」搜索框中输入 jc21/nginx-proxy-manager,选择最新版本(通常带 latest 标签)下载。等待镜像拉取完成后,点击「创建容器」,进行如下配置:

  1. 基础设置:容器名称随意,如 npm
  2. 端口映射:这里要特别注意,不要只映射81端口。你需要将宿主机的80、443、81分别映射到容器的80、443、81。在飞牛的UI中,点击「添加端口」,依次填入:
  3. 宿主机 80 → 容器 80
  4. 宿主机 443 → 容器 443
  5. 宿主机 81 → 容器 81
  6. 存储映射:为了让配置持久化,我们需要挂载两个目录。在「存储」设置中,添加:
  7. data 目录:映射到飞牛的 /vol1/docker/npm/data(请按你的实际存储池路径调整)
  8. letsencrypt 目录:映射到 /vol1/docker/npm/letsencrypt
  9. 环境变量:无需额外添加,默认即可。

点击「部署」等待容器启动。大约10秒后,打开浏览器访问 http://你的NASIP:81,你应该能看到NPM的欢迎界面。默认登录账号为 [email protected],密码为 changeme。首次登录后,系统会强制要求修改密码和邮箱。

配置第一个反向代理

假设你在飞牛NAS上部署了一个Jellyfin媒体服务器,端口为8096。现在,我们希望通过 jellyfin.yourdomain.com 这个域名来访问它。

添加代理主机

登录NPM管理界面,点击左侧菜单的「Hosts」下的「Proxy Hosts」。右上角点击「Add Proxy Host」按钮。

在弹出的表单中: - Domain Names:填入 jellyfin.yourdomain.com。如果有多个域名,可以每行一个。 - Scheme:选择 http(因为Jellyfin默认是HTTP)。 - Forward Hostname/IP:这里要填飞牛NAS的内网IP,例如 192.168.1.100。注意,不能填 localhost127.0.0.1,因为容器是互相独立的网络栈。 - Forward Port:填入 8096。 - Block Common Exploits:建议勾选,能过滤一些常见攻击。 - Websockets Support:如果你的服务需要WebSocket(比如某些实时应用),请勾选。

点击「Save」保存。此时,如果你本地的DNS已经解析了该域名,或者你修改了电脑的hosts文件,访问 http://jellyfin.yourdomain.com 就能看到Jellyfin界面了。

申请SSL证书

光有HTTP还不够,我们需要HTTPS加密。在NPM的代理主机列表中,找到刚才创建的条目,点击右侧的三个点按钮,选择「Edit」。

在编辑页面切换到「SSL」标签页: - SSL Certificate:选择 Request a new SSL Certificate。 - Force SSL:建议勾选,这样所有HTTP请求都会自动跳转到HTTPS。 - HTTP/2 Support:勾选启用。 - Email Address for Let’s Encrypt:填入你的邮箱,用于证书到期提醒。

点击「Save」。NPM会自动向Let‘s Encrypt申请证书并部署。整个过程通常不到30秒。之后,你访问 https://jellyfin.yourdomain.com 时,浏览器地址栏会显示安全的小锁图标。

高级技巧:路径前缀代理

有时候,我们不想为每个服务单独分配子域名,而是想用同一个域名下的不同路径来区分。比如 https://yourdomain.com/photo 访问相册,https://yourdomain.com/cloud 访问云盘。

在NPM中,这需要用到「Custom Locations」自定义位置。在编辑代理主机时,滚动到下方「Custom Locations」区域,点击「Add Location」。

  • location:填入 /photo
  • Schemehttp
  • Forward Host/IP:填相册服务的IP和端口。
  • Preserve path:建议勾选,这样会将 /photo 原样转发给后端服务。

保存后,访问 https://yourdomain.com/photo 就能正常代理。需要注意的是,部分应用(如Nextcloud)对路径前缀支持不好,可能需要额外配置。

常见问题排查

如果你发现代理后无法访问,请按以下顺序检查:

  1. 容器连通性:在NPM容器内执行 curl http://192.168.1.100:8096,看是否能返回内容。如果失败,检查宿主机防火墙或服务是否绑定在回环地址上。
  2. 端口映射:确认飞牛Docker的端口映射没有填错,特别是80和443是否被其他容器占用。
  3. DNS解析:如果你还没将域名解析到NAS的公网IP,可以先用手机开启热点,在电脑上临时修改hosts文件测试。
  4. 日志查看:NPM管理界面底部有「Logs」选项,查看 proxy-host 日志能定位大多数问题。

总结

通过Nginx Proxy Manager,飞牛NAS的服务代理变得异常简单。从安装到配置SSL,整个过程不到五分钟。它极大地降低了反向代理的学习门槛,让你能把更多精力放在应用本身。无论是内网穿透还是公网发布,NPM都能稳定可靠地帮你搞定。如果你的飞牛NAS上跑着多个Web服务,强烈建议部署一个NPM作为统一入口,你会发现管理效率提升不止一个档次。

💬 评论区
发表评论

暂无评论,来说两句吧