节点应用和文件存储

Node application and file storage

这是我的问题:

我有一个负责用户身份验证的 Node Web 应用程序。一旦用户成功登录,他们就会看到一个包含安全文件链接的个性化页面。这是我的文件结构。

secure/ 是托管我的文件的地方

应用程序本身只有 7mb 左右。

这些用户的文件大约为 600mb

我有两个非常高级的问题要问。

  1. 我应该为此使用 express.js 吗?我感觉 Node.js 在这种情况下并不突出,而且我在搜索更复杂的用户身份验证(用户 groups/roles)的教程时遇到了很多困难。 RoR?

  2. 我的文件应该放在应用程序之外吗?在数据库中? s3桶?目前我已经设置了一个静态路由到位于名为 secure 的应用程序目录中的文件夹,然后我有一些中间件检查对 secure/ 的所有请求并检查用户是否被授权(参见下面的代码)。我问这个是因为我使用 Elastic Beanstalk 的上传限制为 512mb

    app.all('/secure/*', function(req, res, next) { 如果(req.isAuthenticated()){ 下一个(); // 允许下一条路线到 运行 } 别的 { // 要求用户登录 res.redirect("/"); } }); app.use('/secure', express.static(config.root + '/secure'));

即使有人能给我提供一些资源也很好!谢谢

  1. Express.js 与 RoR 或其他任何东西一样好。没有进一步的评论。
  2. 是的,绝对是。您的文件必须位于应用程序之外。在几乎所有需要持久存储的场景中,您最好使用 S3 等持久可靠的存储解决方案。而且,将 安全文件 与您的应用程序代码一起发送并不是一个好主意。对于弹性 beantalk,为您的应用程序提供服务而启动的 EC2 实例没有持久本地存储,因此在实例终止时,您的数据将会丢失。除此之外,您将遇到自动缩放问题,其中一个实例无法访问另一个实例中的文件。假设您使用的是 AWS,我建议您使用 S3。您还可以查看 AWS 的新存储解决方案之一:Elastic File System