resolver directive doesn't fallback to the system DNS resolver

Francis Daly francis at
Thu Jan 8 00:15:20 UTC 2015

On Wed, Jan 07, 2015 at 05:37:22PM -0600, Kunal Pariani wrote:

Hi there,

> http { 
> server { 
> listen 443; 
> location ^~ /zss 
> { 
> proxy_pass$request_uri; 
> } 
> } 
> } 

Ok, I see the "no resolver defined to resolve" message
when I make a request that matches that location.

> Although i don't want to use this resolver directive here and instead just want nginx to use the system DNS resolver (from /etc/resolv.conf). Is there a way to achieve this ? 
Unless something has changed recently that I haven't seen, my understanding is:

if the hostname is known at start time, nginx will use the system resolver
to resolve it, and will use the result forever

otherwise, you must use a "resolver" directive to tell nginx which name
servers to use for runtime resolution.

There is no default for "resolver"; if you want one to be used, you must
configure it explicitly. So I think the answer to your question is "no".

(You could probably come up with a way to read /etc/resolv.conf when it
changes, and update the nginx config and reload it; but that's a "dynamic
reconfiguration" problem, not an "nginx dynamic reconfiguration" problem.)

Francis Daly        francis at

More information about the nginx mailing list