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

Alex Domoradov alex.hha на gmail.com
Чт Дек 7 13:01:56 UTC 2017


Понятно, просто изначально проблема была немного другой.

В location /test/ не было указано никаких резолверов, и он проксировал на
тестовый инстанс elk, который со временем удалили, при этом перестало
работать проксирование и на основной elk, который находится в корневом
локейшене. Пользователи стали получать - "504 Gateway Time-out". В
error.log при этом было

2017/12/07 03:21:01 [emerg] 16478#0: host not found in upstream "
search-testing.us-west-1.es.amazonaws.com" in /etc/nginx/conf.d/elk.conf:46

Это тоже нормальное поведение, что если в любом из локейшенов в пределах
одного сервера, перестает резолвиться апстрим, то перестает работать весь
сервер? Я пробовал воспроизвести проблему, но не получилось. Единственное
отличие это то, что в первом случае, когда стал не доступен корневой
апстрим, с момента запуска nginx до момента возникновения проблемы прошел
месяц. Такое ощущение, что сбросились какие то кеши.

2017-12-07 14:45 GMT+02:00 Maxim Dounin <mdounin на mdounin.ru>:

> 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
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20171207/9bfe74a7/attachment.html>


Подробная информация о списке рассылки nginx-ru