Re: Не понятное поведение при использовании proxy_pass в локейшене
Maxim Dounin
mdounin на mdounin.ru
Чт Дек 7 13:33:51 UTC 2017
Hello!
On Thu, Dec 07, 2017 at 03:01:56PM +0200, Alex Domoradov wrote:
> Понятно, просто изначально проблема была немного другой.
>
> В 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 до момента возникновения проблемы прошел
> месяц. Такое ощущение, что сбросились какие то кеши.
Если какое-либо из имён, указанных в конфигурации, не резолвится -
то это повод отклонить такую конфигурацию. Приведённая ошибка -
это как раз ошибка парсинга конфигурации.
Соответственно, если такое происходит при попытке перезагрузить
конфигурацию - то nginx просто продолжит работать со старой
конфигурацией.
Если же вы зачем-то сначала остановили nginx, а потом пытаетесь
запустить его с конфигурацией, в которой указано несуществующее
имя - то сначала придётся конфигурацию исправить, и только после
этого nginx запустится.
(Отмечу в скобках, что некоторые по привычке используют restart
вместо reload при изменениях конфигурации. Так делать не надо -
это, во-первых, приводит к потере запросов в момент перезапуска, а
во-вторых - может привести к полной недоступности сервиса, если
старый nginx завершится, а новый не сможет стартовать из-за
каких-то проблем. Лучше всегда использовать reload, а при
необходимости обновления исполняемого файла - upgrade. Такой
подход позволяет гарантировать, что nginx продолжит работать в
любых условиях. Подробнее про всё это написано на странице
http://nginx.org/ru/docs/control.html.)
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru