Disable caching the names in /etc/hosts in reverse proxy?

Jason Woods devel at jasonwoods.me.uk
Mon Apr 20 17:52:13 UTC 2015

> On 19 Apr 2015, at 01:05, xuhdev <nginx-forum at nginx.us> wrote:
> I'm using Nginx to act as a reverse proxy, where the backend is a name
> defined in /etc/hosts. However, Nginx does not react to the changes made in
> /etc/hosts until restarted. Is it possible to disable caching the names in
> /etc/hosts in reverse proxy?

As B.R. mentioned, the DNS lookup (via /etc/hosts or real DNS) is only done at startup and reload.

You can change the behaviour to dynamic lookup by specifying a resolver in the server block and then using variables in the proxy_pass. For example:

server {
  location / {
    proxy_pass http://reverse_host$uri$is_args$args;

Because of the variables Nginx can't predict at startup what to perform a lookup for. As a result it will perform the DNS lookup at request time. The lookup response is then cached for the DNS TTL period.

CPU may be a little higher I guess but I haven't noticed anything even on high load clusters.

This behaviour is eluded to in the documentation's last couple of paragraphs for proxy_pass at:


More information about the nginx mailing list