alekstar79
@alekstar79

Проксирование запросов к двум сервисам основываясь на пути маршрута?

Имеется следующее приложение (микросервисная архитектура)
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS                   PORTS                                                 NAMES
18f0c0aa0e82   nginx_proxy            "nginx"                  3 minutes ago   Up 3 minutes             0.0.0.0:8080->80/tcp                                  reverse-proxy
64d8d6324ff8   mailing_service        "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                                                                   mailing_srv
8412a4d6cc68   auth_service           "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes             0.0.0.0:8081->8080/tcp                                auth_srv
9263eed81952   api_service            "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes             0.0.0.0:8082->8080/tcp                                api_srv
0113cc7e4c5e   postgres:12.6-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes (healthy)   5432/tcp                                              welbex-users_pg-1
fb3824b208d8   rabbitmq:3.10-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes (healthy)   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   welbex-rabbitmq-1
dc641c60feb3   postgres:12.6-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes (healthy)   5432/tcp


каждый сервис, соответственно в своем контейнере. Наружу, сейчас выглядывают nginx_proxy (localhost:8080), auth_service (localhost:8081) и api_service (localhost:8082). Мне нужно добиться следующей маршрутиризации:

localhost:8080/auth -> auth_service
localhost:8080/api -> api_service

Будет ли это проксирование снаружи, на хост машине происходить или internal, через какие-нибудь бриджи сути не играет. Совсем потерялся в docker networks. Надеюсь, найдется тот кто шарит!
  • Вопрос задан
  • 363 просмотра
Решения вопроса 1
akelsey
@akelsey
Делаете reverse-proxy на nginx, где по доменному имени (не localhost) делаете прокси в нужный контейнер. Докер тут не причём.
server {
    listen 8080;
    server_name my-server.ru ;

   location /auth {
        proxy_pass http://auth_service:8081;
....
   location /api {
        proxy_pass http://api_service:8082;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы