Re: Не понятное поведение при использовании proxy_pass в локейшене

Maxim Dounin mdounin на mdounin.ru
Чт Дек 7 12:45:22 UTC 2017


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