这是我的微服务设置的示意图:
换句话说:
- 请求来自浏览器
- nginx 将请求反向代理到 angular 容器
- 角度容器向后端服务发出请求以检索数据
现在我的后端服务受到保护,只能使用在点击 /login 时在后端本身生成的授权标头进行访问。
如果登录成功,angular 将获取令牌并将其附加到对服务器的每个后续请求中。只是这不会发生。
如您所见,授权标头未嵌入到请求中,因此后端服务永远不会收到它并抛出 401。
这是我的角度 nginx 完整设置:
server {
listen 4200;
location / {
proxy_pass_request_headers on;
proxy_pass_header Authorization;
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
}
虽然这是 nginx 反向代理
location /myne-dashboard-webui/ {
proxy_pass http://myne-dashboard-webui/;
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass_header Authorization;
}
我尝试使用 proxy_pass_header、set_header $http_request 和 add_header,但都失败了。有人能帮忙吗?提前谢谢
编辑:此外,如果我运行我的角度应用程序和后端独立,没有 nginx 和 docker,那么它就会按预期工作,所以我排除了我的某个服务有错误的可能性