0
nginx ignorar "host not found in upstream"

Solved 1 Respuestas 9 Views

Tengo un nginx para operar como intermediario http en un sistema de virtualización. Nginx (puerto 80 y 443) está púbilco y accede a una red que es accesible solo desde el sistema de virtualización.

El nginx opera como proxy reverso y hay distintos virtualhosts para hacer visibles a los servicios http(s) de containers en la red que mencioné.

Los nombres de hosts se cargan vía solicitudes de DHCP, el  DHCP está configurado como proxy DNS y entonces entre los hosts de la red cuando preguntan por el número IP de otro host el dnsmasq (o bind9+dhcpd) contesta con el número del container que anteriormente se inició.

Mi problema está en que justamente, por motivos de desarrollo a veces damos de alta en el nginx un vhost, nos olvidamos y luego eliminamos el container. Error 500 en el nginx, es lo de menos, lo borramos, el subodominio caducó. PERO cuando se reinicia el nginx hallo el error:

[emerg] host not found in upstream

que detiene el arranque de nginx.

Y es lógico, cuando se solicita IP por el host de un container que ya no existe, la caché del DNS local caducó.

Busco una solución a este problema, porque no siempre estoy yo para salvar ese problema. La primera que se me ocurre es poner IP (en vez de server foo; usar server 10.10.1.4;) pero sería deshacer todo el tema de DNS local y DHCP para no estar atado a los números de IP.

Gracias, saludos.

1 Respuesta

1
Mejor respuesta
Lo que se me ocurre es que podes usar fqdns en la configuracion y en tu bind agregar un ultimo registro *.internal.domain.com que apunte a un contenedor por default. No es lo mas lindo del mundo, pero si algun host deja de existir individualmente deberia seguir resolviendo por el wildcard. Ademas en este conteiner podes clavar una pagina estatica de notificacion o un redirect y problema resuelto.
respondido por edux (12,430 puntos) Mar 14, 2016
seleccionada por MAbeeTT Nov 11, 2017
2Comentarios
comentado por MAbeeTT (2,350 puntos) Nov 11, 2017
sí, por ahí venía la mano, gracias.
...