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