Hello!

On Thu, Dec 07, 2017 at 02:31:54PM +0200, Alex Domoradov wrote:

> Привет всем, столкнулся с непонятным поведением

[...]

> с этой частью никаких проблем нет, она работает как и проложено. Но в этом
> же сервере есть один тестовый локейшен
> 
>    location /test/ {
>         resolver 172.23.16.2 valid=10s;
>         resolver_timeout 10s;
>         proxy_pass http://fake-upstream.example.com/;

[...]

> Создаю временную запись fake-upstream.example.com с ttl 60s и указываю на
> свой домен sys-adm.org.ua. Все работает, потом удаляю запись, проверяю что
> на сервере с nginx она тоже не видится
> 
> # host fake-upstream.example.com 172.23.16.2
> Using domain server:
> Name: 172.23.16.2
> Address: 172.23.16.2#53
> Aliases:
> 
> Host fake-upstream.example.com not found: 3(NXDOMAIN)
> 
> но при этом nginx все так же проксирует запросы, которые попадают в этот
> location. Это так и задумано?

Да.  Имена, явно написанные в конфиге, резолвятся на этапе чтения 
конфигурации.  Если они изменились и надо обновить конфигурацию - 
следует сказать nginx'у, чтобы он перезагрузил конфигурацию, см. 
http://nginx.org/ru/docs/control.html#reconfiguration.

Исключения - "server ... resolve" в nginx-plus 
(http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#resolve) 
и случаи, когда в proxy_pass используются переменные, и 
соответственно имена не известны в момент парсинга конфигурации.  
В этих случаях будет использован resolver.

-- 
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить