在我的应用中,我想将后端与前端分开。我有多个静态站点,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提供。
我希望我很清楚,要正确表达我的问题并不容易。我感谢任何帮助和建议,也许我的方法不是一个好主意或是一个不好的做法。
解决方案可以在正确答案的评论中找到。
答案 0 :(得分:1)
对于初学者,应该在后端服务器而不是在nginx中处理对某些静态文件的授权。 Nginx只是一个代理,而不是授权的处理程序。如果您使用快递,可以查看passport。
其次,我认为你对静态文件有错误的想法。一个提示是编译它们以使它们变小(查看http://nginx.org/en/docs/http/ngx_http_gzip_module.html)。但那是nginx处理静态文件的程度。