Tengo un enjambre docker que ejecuta 2 servicios de matraz de Python, cada uno de los cuales se ejecuta en una región diferente, digamos A y B. La región A también ejecuta Nginx, que es el punto de entrada principal para acceder a los servicios. Hay una base de datos MongoDB ejecutándose en la región A, fuera del enjambre de Docker. El servicio de python que se ejecuta en la región A puede conectarse a MongoDB que se ejecuta en la región A, pero el servicio B no puede conectarse a MongoDB desde la región B. Mi pregunta es ¿puedo configurar Nginx para el servicio de proxy B para conectarse a MongoDB?
La configuración de ubicaciones de Nginx para los servicios es:
location /a { proxy_pass https://a-service:5000/; # running in region A } location /b { proxy_pass https://b-service:5001/; # running in region B }Donde a-service y b-service son los nombres de los contenedores de Docker Swarm.
Vi las publicaciones sobre cómo configurar MongoDB detrás de Nginx, pero mi caso es el inverso: acceder a MongoDB externo desde dentro de un enjambre de Docker a través de un Nginx dentro del enjambre.
( Cómo configurar MongoDB detrás de Nginx Reverse Proxy )
Entiendo que necesito tener algo como esto en 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; } }Sin embargo, la ubicación del host mongodb ( https://5.150.225.25 ) es otra máquina virtual fuera del enjambre docker, no una IP local. Esto da como resultado un error:
nginx: [emerg] invalid host in upstream "https://5.150.225.25:27017" in nginx.conf