Resolución Nginx de Docker Network


Estoy tratando de deshacerme de los enlaces Docker obsoletos en mi configuración. Lo que queda es deshacerse de esos Bad Gateway errores de proxy inverso nginx cuando recreé un contenedor.

Nota: Estoy usando redes Docker en modo puente. (docker network create nettest)

Estoy usando el siguiente fragmento de configuración dentro de nginx:

location / {
      resolver 127.0.0.1 valid=30s;
      set $backend "http://confluence:8090";
      proxy_pass $backend;
  1. Inicié un contenedor con hostname confluence en mi red Docker con name nettest.
  2. Luego inicié el contenedor nginx en la red nettest.
  3. Puedo hacer ping confluence desde el interior del contenedor nginx
  4. confluence se encuentra dentro del archivo /etc/hosts del contenedor nginx
  5. nginx log dice 'send() failed (111: Connection refused) while resolving, resolver: 127.0.0.1: 53"
  6. Probé el solucionador dns predeterminado de la red docker 127.0.0.11 desde /etc/resol.conf
  7. nginx log dice confluence could not be resolved (3: Host not found)

Cualquiera sabe cómo configurar nginx resolver con redes Docker o una alternativa sobre cómo forzar Nginx a ¿resolver correctamente el nombre de host de la red Docker?

Author: blacklabelops, 2016-03-02

3 answers

En primer lugar, debería usar el servidor DNS integrado de Docker en 127.0.0.11.

Su problema podría ser causado por 1 de los siguientes:

  1. Nginx está tratando de usar IPv6 (registro AAAA) para las consultas DNS.

    Véase https://stackoverflow.com/a/35516395/1529493 para la solución.

    Básicamente algo como:

    http {
        resolver 127.0.0.11 ipv6=off;
    }
    

    Esto probablemente ya no es un problema con Docker 1.11:

    Se corrige que no se reenvían las consultas IPv6 del dominio de docker a servidores externos (#21396)

  2. Tenga cuidado de no sobrescribir accidentalmente la directiva de configuración resolver. En mi caso tenía en el bloque server resolver 8.8.8.8 8.8.4.4; de el Generador de configuración SSL de Mozilla, que estaba anulando el resolver 127.0.0.11; en el bloque http. Eso me hizo rascarme la cabeza durante mucho tiempo...

 57
Author: Teoh Han Hui,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-15 15:03:32

Tal vez deberías comprobar el /etc/resolv.conf

Muestra la configuración DNS correcta de su contenedor y luego usa esa IP del servidor DNS para resolver.

127.0.0.11 no funciona en Ranchero

 3
Author: exiaohao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-05 09:24:10

Necesita un servidor dns local como dnsmasq para resolver usando 127.0.0.1. Intente instalarlo usando apk add --update dnsmasq y configúrelo si está utilizando una variante alpine (nginx:alpine).

 0
Author: Seph Soliman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-19 10:41:34