Solución:
Tienes que definir upstream directamente. Actualmente, su nginx no puede utilizar un proxy para su aplicación web.
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
Mi situación estaba ejecutando 3 contenedores, un contenedor nginx y dos servicios en contenedores. Estaba usando el contenedor Nginx como proxy inverso para mis servicios go.
El problema es que el contenedor nginx buscaba puertos de microservicio en su propio entorno de contenedor. No me di cuenta de eso en ese momento y no usé el docker-compose.yml en ese momento. Cuando usa el archivo docker-compose.yml, especifica un ‘depende de: …’ y eso es todo
Entonces, al ejecutar los contenedores, debe usar --net=host
. Información sobre eso: ¿Qué hace realmente la opción –net = host en el comando Docker?
Esto funcionó para mí, espero que le ahorre a alguien el dolor :):
docker run --net=host nginx:someTag
docker run --net=host service1:someTag