configuration test ignores custom resolver
Francis Daly
francis at daoine.org
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 192.168.140.249 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.
No.
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.
http://nginx.org/r/proxy_pass 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?
https://www.nginx.com/blog/dns-service-discovery-nginx-plus/ shows some
more information; the first half of that document is valid for nginx
(non-plus).
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,
f
--
Francis Daly francis at daoine.org
More information about the nginx
mailing list