DNS TTLs being ignored

Noah Cantor noah at forward.co.uk
Fri Oct 28 13:16:50 UTC 2011


I have recently come across several related issues which I have tracked down
to nginx and the way it handles DNS.
I run nginx as a proxy for several back end services. It works really well,
except for 1 thing.
My proxy_pass refers to an upstream which points to a DNS entry.
That DNS entry is a CNAME with a TTL of 60 seconds.
Nginx doesn't appear to be honoring that TTL. This has happened twice now.
My upstream DNS information has changed, pointing to a new IP address.
Instead of recovering withing 1 minute (which would happen if TTLs were
being honored), I have had to restart nginx.
When I searched for it, I found that nginx doesn't appear to honor TTLs, at
all (http://www.ruby-forum.com/topic/2657341).

What I'm hoping to find out, is why?
Why does nginx cache DNS entries, instead of referring to the operating
system? The OS has DNS handling built in. It respects TTLs, and it works
perfectly. Nginx, on the other hand, is effectively broken as a load
balancer, since upstreams might change IP addresses at any time (which is
why we're using DNS names, instead of IP addresses.

Thanks,
Noah
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20111028/955584aa/attachment.html>


More information about the nginx mailing list