proxy_pass letsencrypt google compose nginx docker reverse-proxy

letsencrypt - nginx proxy_pass a un contenedor de acoplador vinculado



proxy_pass docker (3)

Debería echar un vistazo a esta respuesta sobre el uso de / etc / hosts como su resolver: Usar / etc / hosts como resolver para la reescritura de URL

Básicamente, su DNS o resolver no usa / etc / hosts para resolver nombres durante una búsqueda, pero puede solucionar esto instalando dnsmasq y usando 127.0.0.1 como su resolver. Puede agregar 127.0.0.1 como resolver directamente en su configuración de nginx:

server { location ~ ^/some_url/(.*)$ { resolver 127.0.0.1; proxy_pass http://container1/$1; } }

Tengo dos contenedores Docker con nginx. container1 está vinculado a container2. Docker luego agrega una entrada a / etc / hosts que ingresé en la configuración de nginx de la siguiente manera:

server { location ~ ^/some_url/(.*)$ { proxy_pass http://container1/$1; } }

Puedo hacer ping a container1 desde container2 , pero nginx no puede resolverlo:

* 1 no se definió una resolución para resolver container1

¿Cómo puedo proxy_pass una solicitud a otro contenedor acoplador?


Puede usar el servicio DNS incorporado de Docker, si está habilitado, verifique su solucionador de contenedor:

cat /etc/resolv.conf

Debiera ser:

nameserver 127.0.0.11

Use esta IP como resolver:

server { location ~ ^/some_url/(.*)$ { resolver 127.0.0.11; proxy_pass http://container1/$1; } }


Use un bloque de flujo ascendente en lugar del nombre del contenedor directamente

upstream backend { server container1; } server { location ~ ^/some_url/(.*)$ { proxy_pass http://backend/$1; } }

Esto debería permitir que se produzca la resolución normal del nombre, proporcionando una forma de usar fácilmente los enlaces del acoplador con nginx.