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;
- Inicié un contenedor con hostname
confluence
en mi red Docker con namenettest
. - Luego inicié el contenedor nginx en la red
nettest
. - Puedo hacer ping
confluence
desde el interior del contenedor nginx -
confluence
se encuentra dentro del archivo/etc/hosts
del contenedor nginx - nginx log dice 'send() failed (111: Connection refused) while resolving, resolver: 127.0.0.1: 53"
- Probé el solucionador dns predeterminado de la red docker
127.0.0.11
desde/etc/resol.conf
- 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?
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:
-
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)
Tenga cuidado de no sobrescribir accidentalmente la directiva de configuración
resolver
. En mi caso tenía en el bloqueserver
resolver 8.8.8.8 8.8.4.4;
de el Generador de configuración SSL de Mozilla, que estaba anulando elresolver 127.0.0.11;
en el bloquehttp
. Eso me hizo rascarme la cabeza durante mucho tiempo...
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
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
).
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