DNS cache in nginx

Hello ,

I have an A record which resolve to 2 CNAME’s , the DNS failover will
make the switch if something go wrong .

The problem is that after a change the nginx stick to the OLD IP
unless I reload it …
any way the Caching can be disabled ?
I tried the following with no success :
add valid for the resolver ,
resolver 8.8.8.8 valid=5s;
and or
resolver_timeout 1s;

Any recommendation to solve it ?

– shay

Hello!

On Sat, Jul 04, 2015 at 09:42:06AM +0300, Shay Peretz wrote:

resolver 8.8.8.8 valid=5s;
and or
resolver_timeout 1s;

Any recommendation to solve it ?

As long as you write host names in nginx configuration, nginx will
resolve these names while parsing the configuration. It won’t
notice any changes unless the configuration is reloaded.

If you want nginx to periodically re-resolve names, there are two
options available:

  1. Use proxy_pass with variables:

    resolver 127.0.0.1;
    set $upstream “backend.example.com”;
    proxy_pass http://$upstream;

When variables are used in the “proxy_pass” directive, nginx
will resolve names at runtime. See Module ngx_http_proxy_module
for details.

  1. Use the “resolve” flag in an upstream{} block. Only available
    in nginx plus, see
    Module ngx_http_upstream_module
    for details.

Alternatively, you may consider using nginx mechanisms to do
failover instead. See these links for some details:

http://nginx.org/en/docs/http/ngx_http_upstream_module.html
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream


Maxim D.
http://nginx.org/