node.js - 使用 nginx 和express.js 的静态站点 - 身份验证

标签 node.js express authentication nginx

我的计划

在我的应用程序中,我想将后端与前端分开。我有多个静态站点,其中 vue.js 访问 Express 服务器提供的 api。所有静态文件都应由 nginx 提供服务。
所以现在我的 nginx 配置文件如下所示:

http {
  ...
  upstream backend {
    server localhost:3000;
    keepalive 64;
  }
  ...
  server {
    ...
    location /api {
      ...
      proxy_pass http://backend;
    }
  }
}

因此,所有对 /api 的请求均由在端口 3000 运行的 Express 处理。用户可以通过访问后端 api 的前端登录。

现在来解决问题:

我有一些网站(例如 /dash),它们也是静态的,但只能由经过身份验证(身份验证由快速 session 处理)和具有特定用户角色(例如 editor)的用户访问。
编辑的用户在访问/dash时应该收到错误403,而对于其他用户,/dash应该由nginx提供服务。

我希望我说得足够清楚,正确表达我的问题并不容易。我感谢任何帮助和建议,也许我的方法不是一个好主意或者是一个不好的做法。

编辑

解决方案可以在正确答案的评论中找到。

最佳答案

对于初学者来说,对某些静态文件的授权应该在后端服务器中处理,而不是在 nginx 中处理。 Nginx 只是一个代理,而不是授权处理程序。也许看看passport如果您使用 express 。

其次,我认为您对静态文件的看法是错误的。一个技巧是编译它们以使其更小(查看 http://nginx.org/en/docs/http/ngx_http_gzip_module.html )。但这就是 nginx 处理静态文件的程度。

关于node.js - 使用 nginx 和express.js 的静态站点 - 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44547415/

相关文章:

node.js - 迭代 mongoDB 集合,对每个项目执行异步聚合任务,完成后在 Response 中返回 JSON

node.js - PostgreSQL 的 Sequelize.js 事务问题

node.js - ajax调用更新jade部分模板

node.js - Meteor的CollectionFS下载错误: write after end

node.js - Node 中的角色和锁定端点

javascript - 是否可以从express.js中的路由器中提取前缀?

angular - 根据登录状态使用路由器重定向用户

asp.net - 在 ASP.NET 身份验证系统中合并 OAuth 帐户

ruby-on-rails-3 - Rails 3设计“token per client”

Javascript & promises with Q - promises 中的闭包问题