Nginx — Angular не передает заголовок авторизации

#angular #docker #nginx

#angular #docker #nginx

Вопрос:

Это схема настройки моих микросервисов:

введите описание изображения здесь

Чтобы выразить словами:

  1. запрос поступает из браузера
  2. nginx переворачивает прокси-запрос в контейнер angular
  3. угловой контейнер запрашивает серверную службу для извлечения данных

Теперь моя серверная служба защищена, и доступ к ней возможен только с помощью заголовка авторизации, который генерируется в самой серверной части при нажатии /login .

введите описание изображения здесь

Если вход в систему прошел успешно, angular примет токен и присоединит его к каждому последующему запросу к серверу. Только то, что этого не происходит.

введите описание изображения здесь

Как вы можете видеть, заголовок авторизации не встроен в запрос, поэтому серверная служба никогда не получит его и не выдаст 401.

Это моя полная настройка angular 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, но все потерпели неудачу. Кто-нибудь может помочь? Заранее благодарю вас

Редактировать: кроме того, если я запускаю свое приложение angular и серверную часть автономно, без nginx и docker, тогда оно работает так, как ожидалось, поэтому я исключаю возможность того, что одна из моих служб неверна введите описание изображения здесь

Комментарии:

1. У меня такая же проблема, вам удалось ее решить?

2. Привет, Фернандо, я только что проверил, что я сделал (хотя, если я правильно помню, nginx не был проблемой), и рабочая конфигурация удаляет все в местоположении, за исключением этих 2 свойств: proxy_pass myne-dashboard-webui ; proxy_pass_request_headers включен; Если я правильно помню причину, по которой он не передавалзаголовок аутентификации находился в библиотеке jwt, которую я использовал, а не в nginx

3. Привет, спасибо за ответ! Я только что нашел решение, и проблема была не в nginx в моем случае. В моем случае проблема заключалась в том, что интерфейс не разрешал хосту, если у меня был API для передачи заголовка авторизации.