#angular #docker #nginx
#angular #docker #nginx
Вопрос:
Это схема настройки моих микросервисов:
Чтобы выразить словами:
- запрос поступает из браузера
- nginx переворачивает прокси-запрос в контейнер angular
- угловой контейнер запрашивает серверную службу для извлечения данных
Теперь моя серверная служба защищена, и доступ к ней возможен только с помощью заголовка авторизации, который генерируется в самой серверной части при нажатии /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 для передачи заголовка авторизации.