我有一个使用Rails 5.0.4构建的工作会员网站(puma / nginx / latest Devise)。在许多其他方面,它将.mp3文件流式传输到浏览器内的播放器。 .mp3文件位于rails资产管道中,因此生产中放置在/ public / somefolder中,rails然后依赖nginx直接为这些文件提供服务。
这一切都很好,除了现在任何人,甚至是非成员,都可以找出这些.mp3文件的URL,并且无需先登录即可随意获取它们。我不希望这种情况发生。这些资产必须仅限于会员。
我已经玩弄了将.mp3文件移出资产管道并进入私人文件夹然后通过控制器提供服务的概念。我看到的问题是我想象服务这些文件的负载会对rails造成影响。我宁愿让nginx做它最擅长的事情......提供静态文件...如果可能的话。
我还考虑了提供过期网址或混淆网址的解决方案,但我见过的都不会阻止有人找到该文件的直接网址。所以我所知道的都可以轻易被击败。
所以,说到这一点,任何人都可以告诉我如何实现我想要的东西吗?有没有办法限制对nginx服务(或CDN服务)静态文件的访问权限,只允许用户正式登录到我的会员网站等铁路网站?在这一点上,我愿意接受建议......