Nginx-Angular 未传递授权标头

Nginx-Angular 未传递授权标头

这是我的微服务设置的示意图:

在此处输入图片描述

换句话说:

  1. 请求来自浏览器
  2. nginx 将请求反向代理到 angular 容器
  3. 角度容器向后端服务发出请求以检索数据

现在我的后端服务受到保护,只能使用在点击 /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,那么它就会按预期工作,所以我排除了我的某个服务有错误的可能性 在此处输入图片描述

相关内容