Mic.Run

Back

飞牛 NAS 分享链接安全解决方案飞牛 NAS 分享链接安全解决方案

TL;DR

太长不看?先看结论!
  • 前提是 NAS 有公网 IP。在 EdgeOne 中把一个独立分享域名回源到飞牛 NAS,对外只分享这个 CDN 域名,不暴露源站地址。
  • 在“站点加速 → 规则引擎”中新建子规则,条件填“${http.request.host} in ['你的分享域名'] and not lower(${http.request.uri.path}) in ['/s/*']”,动作选择 302 URL 重定向并指向任意安全页面。
  • 保存后验证:https://分享域名/s/分享ID 应正常打开,/s 之外的后台、登录等路径应全部被重定向。EdgeOne 免费版 WAF 无法按路径拦截,所以要用规则引擎实现。

前言#

最近在使用飞牛 NAS 时,我遇到了一些与公开分享链接有关的问题:如果直接把公网访问地址分享出去,对方不仅能打开分享页面,还可能访问同一地址下的其他 NAS 页面 (例如后台管理)。路径隔离没做好,甚至会把整个 NAS 管理入口暴露到公网。

当然,也可以使用自带的 FN Connect,但它的带宽实在不够看。即使付费扩容,也达不到我现有公网线路的 100Mbps 上行带宽。

于是,我把目光投向了 EdgeOne。在配置过程中遇到了几个小问题,便写下这篇文章,记录一下自己的解决方案。

解决思路#

源站隐藏#

这一点没什么好展开的。让访问流量经过 CDN,通常就能起到隐藏源站地址的作用。不过,域名需要完成备案后才能使用国内节点。

仅允许访问分享页面#

先创建一个公开分享链接:

https://public-nas.mic.run/s/6c5229a34c164f1ba6
txt

不难看出,飞牛 NAS 的分享链接使用 /s/xxxxxxxxxxxxxx 这种路径格式。

按照最初的设想,只要写一条安全规则,拦截所有不符合 /s/* 格式的请求就可以了。

好吧,并不行。EdgeOne 免费版的安全规则不支持使用路径匹配来拦截请求。

真的不行

但这怎么能够拦住我呢?翻找一下页面,我发现了 站点加速 - 规则引擎 这个玩意。

规则引擎虽然不能直接拦截请求,却可以执行重定向。然后我就把所有非分享路径都重定向到了原神官网

真的可以

下面是完整的规则 JSON,其中还包含了我自己添加的缓存配置,有需要可以直接取用。

效果验证#

配置完成后,访问下面的分享链接,可以正常打开页面并播放视频:

https://public-nas.mic.run/s/6c5229a34c164f1ba6

当你尝试访问 /s 以外的路径时,请求会被重定向到 原神官网。这样既保留了公开分享功能,也避免了其他 NAS 页面直接暴露在同一个公网地址下。

我是如何优雅地解决飞牛 NAS 公开分享链接安全问题的
https://mic.run/blog/secure-fnos-public-share-links
Author Mic
Published at 2026年7月12日
Comment seems to stuck. Try to refresh?✨