Как использовать nginx в качестве обратного прокси для angular (nodejs) сервера разработки на хост-машине - PullRequest
0 голосов
/ 17 июня 2020

У меня проблема с тем, чтобы локальная среда разработки работала так, как я хочу. Мы используем микросервисную архитектуру и используем, например, keycloak в качестве нашей системы управления идентификацией. Мы используем docker изображений, которые мы либо используем готовые из docker хаба, либо создаем свои собственные.

Я хочу как можно точнее воспроизвести производственную среду в нашей среде разработки. Для нашего интерфейса мы используем angular, который в производстве представляет собой пользовательское изображение docker, которое является не чем иным, как стандартным nginx изображением, с выходными файлами stati c из нашей angular build (ng build --prod) скопировал в него. У нас также есть еще один контейнер nginx, который содержит только proxy_pass местоположений, которые затем отправляют запрос на основе URL-адреса в соответствующий контейнер (например, https://www.example.com/auth будет проксироваться в контейнер Keycloak).

Когда разработчик работает над внешним интерфейсом на своем ноутбуке, наиболее простым решением, очевидно, является использование ng serve, однако при выполнении только этого внешнего интерфейса придется использовать разные адреса конечных точек для доступа к другим службам, работающим в своих соответствующих контейнерах . Возвращаясь к примеру с клавиатурой, вместо того, чтобы просто вызывать /auth/whatever конечную точку из angular, URL-адрес должен быть https://localhost:8080/auth/whatever, чтобы работать локально.

Итак, у меня возникла идея раскрутить весь стек на машине разработчика, за исключением контейнера nginx, в котором размещен наш интерфейс, вместо этого я бы перенастроил обратный прокси nginx на запросы прокси для интерфейса на http://172.17.0.1:4200 (заменив 172.17.0.1 независимо от IP-адреса хост-машины), где NodeJS будет размещать среду разработки angular.

К сожалению, я не могу заставить это работать ... Конечно, я бегу ng serve --host 0.0.0.0, так что NodeJs будет отображаться на любом интерфейсе, я подтвердил, что это работает правильно, поскольку я могу перейти в свою среду angular dev с другого компьютера в сети. Проблема заключается в том, что мой прокси-контейнер nginx не может получить доступ к порту 4200 моего хоста. Я пробовал следующие шаги внутри контейнера nginx прокси docker: * ping 172.17.0.1: работает нормально * nmap -sT 172.17.0.1: показывает открытые порты другими контейнерами docker, но не 4200 * nmap -sT 172.17.0.1 -p 4200: Показывает, что порт 4200 закрыт

Есть идеи, как я могу заставить это работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...