Nginx proxy_pass с динамическим откатом

Я использую nginx как обратный прокси на 3 разных хостах. DNS преобразует production.example.com в IP-адреса всех трех хостов. Таким образом, у меня есть своего рода балансировка нагрузки и откат, если один хост недоступен.

На каждом хосте работает несколько докер-контейнеров. Некоторые из них работают на всех трех хостах, некоторые только на двух или даже только на одном.

Используя nginx proxy_pass , я перенаправляю все запросы в контейнер » s внутреннее имя (я использую Rancher, поэтому каждый контейнер доступен через container_name.stack_name через внутренний DNS).

Время от времени контейнер недоступен или не отвечает, поэтому nginx возвращает ошибку 502.

Есть ли какой-либо способ для этого автоматического отката? К сожалению, nginx игнорирует все другие разрешенные адреса для внутреннего имени контейнера Docker и, таким образом, не пересылает запрос на другой адрес.

0
задан 24 October 2017 в 16:30
1 ответ

Вы должны использовать директиву proxy_next_upstream

Указывает, в каких случаях запрос должен быть передан на следующий сервер

location / {
    proxy_pass http://backends;
    proxy_next_upstream error timeout http_502;
}
1
ответ дан 4 December 2019 в 16:06

Теги

Похожие вопросы