我的计划
在我的应用程序中,我想将后端与前端分开。我有多个静态站点,其中 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/