Задать вопрос
@bengur2

Как запустить Nginx балансировщик, если host not found in upstream?

Делаю контейнер балансировщика.

Dockerfile:
FROM nginx:latest

COPY server.conf /etc/nginx/conf.d/

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]


server.conf:
upstream bundle {
    server app;
    server fallback backup;
}

server {
    listen 80;
    server_name localhost;
    resolver 127.0.0.11;

    location / {
        proxy_pass http://bundle;
    }
}


Запуск:
sudo docker run --name $DOCKER_CONTAINER_NAME -d --network dev -p 80:80 $DOCKER_IMAGE_LATEST


При запуске, возникает ошибка:
nginx: [emerg] host not found in upstream "app"
  • Вопрос задан
  • 4893 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
попробуйте через переменную:
map $scheme $upstream_main {
  default app;
}

upstream bundle {
    server $upstream_main;
    server fallback backup;
}
Ответ написан
@bengur2 Автор вопроса
Есть статья:
https://www.nginx.com/blog/dns-service-discovery-n...

Там описано 5 методов для разрешения хостов.
Из них 3 метода для бесплатной версии Nginx.

В методе 2 описано использование upstream, но сервер не поднимается, если хост недоступен.
В методе 3 описано использование переменных, и сервер запустится в любом случае, но нельзя использовать upstream.

Неужели upstream и принудительный запуск - это конфликтующие хотелки?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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