configuration test ignores custom resolver

Francis Daly francis at
Mon Sep 7 11:34:47 UTC 2020

On Mon, Sep 07, 2020 at 12:02:58PM +0700, Anton Demenev wrote:

Hi there,

> Unfortunately, I can't find information about how Nginx tests configuration
> files.

As far as I know, it's pretty much "do everything apart from actually
listen on ports or write to files".

> In my case I have a two internal DNS zones, .develop and .test.
> On global http section I added my resolver:
> ...
> http {
>     resolver valid=300s;
>     resolver_timeout 1s;
> ...
> And I use proxy_pass directive with DNS name likeproxy_pass
> http://front-dev.develop;
> I expect, that Nginx start to use resolver for upstream name resolving on
> test config stage.


nginx uses the system resolver at startup, to resolve whatever "obviously
static" hostnames are in the config.

nginx uses the "resolver"-directive resolver at runtime, to resolve
whatever other hostnames apply then. has some information about when a resolver
is used.

> But everything go wrong...
> On strace output I see, that on start Nginx uses system resolver, ignoring
> custom resolver from config.
> Can anyone help with this? What I do wrong? shows some
more information; the first half of that document is valid for nginx

Probably the simplest nginx-way is to use a variable in your proxy_pass
directive, so that the hostname is not "obviously static" at startup,
and so that the system resolver will not be used then.

Good luck with it,

Francis Daly        francis at

More information about the nginx mailing list