Nginx конфигурация для подключения к внешнему mongodb от docker роя - PullRequest
0 голосов
/ 09 марта 2020

У меня есть docker рой, работающий 2 python flask служб, каждая из которых работает в своем регионе, скажем, A и B. В области A также запущена Nginx, которая является основной точкой входа для доступа услуги. База данных MongoDB работает в регионе A, за пределами роя docker. Служба python, работающая в регионе A, может подключаться к MongoDB, работающему в регионе A, но служба B не может подключаться к MongoDB из региона B. Мой вопрос: можно ли настроить Nginx для прокси-службы B для подключения к MongoDB? ?

Конфигурация местоположений Nginx для сервисов:

location /a {
  proxy_pass https://a-service:5000/;  # running in region A
}

location /b {
  proxy_pass https://b-service:5001/;  # running in region B
}

Где a-service и b-service - это docker имена контейнеров роя.

Я видел сообщения о том, как настроить MongoDB за Nginx, но мой случай обратный - получить доступ к внешней MongoDB изнутри docker роя через Nginx внутри роя.

( Как настроить MongoDB за Nginx Обратный прокси )

Я понимаю, что мне нужно что-то подобное в nginx .conf:

stream {
    server {
        listen 27020;
        proxy_connect_timeout 5s;
        proxy_timeout 20s;
        proxy_pass    mongodb_host;
    }

    upstream mongodb_host{
        server https://5.150.225.25:27017;
    }
}

Однако местонахождение хоста mongodb (https://5.150.225.25) - это другой vm вне роя docker, а не локальный IP. Это приводит к ошибке:

nginx: [emerg] invalid host in upstream "https://5.150.225.25:27017" in nginx.conf
...