具有nginx和express.js的静态站点 - 验证

时间:2017-06-14 14:19:48

标签: node.js express authentication nginx

我的计划

在我的应用中,我想将后端与前端分开。我有多个静态站点,vue.js访问快递服务器提供的api。所有静态文件都应该由nginx提供 所以现在我的nginx配置文件看起来像这样:

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

因此,对/api的所有请求都是通过在端口3000上快速运行来处理的。用户可以通过访问后端api的前端登录。

现在转到问题

我有一些网站(例如/dash)也是静态的,但只有经过身份验证的用户(身份验证由快递会话处理)和特定用户角色(例如editor )。
editor的用户在访问error 403时应获得/dash,而对于其他用户,/dash应由nginx提供。

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

修改

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

1 个答案:

答案 0 :(得分:1)

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

其次,我认为你对静态文件有错误的想法。一个提示是编译它们以使它们变小(查看http://nginx.org/en/docs/http/ngx_http_gzip_module.html)。但那是nginx处理静态文件的程度。