B
B
bengur22022-04-12 12:38:09
Nginx
bengur2, 2022-04-12 12:38:09

How to start Nginx balancer if host not found in upstream?

I'm making a balancer container.

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;
    }
}


Launch:
sudo docker run --name $DOCKER_CONTAINER_NAME -d --network dev -p 80:80 $DOCKER_IMAGE_LATEST


On startup, an error occurs:
nginx: [emerg] host not found in upstream "app"

Answer the question

In order to leave comments, you need to log in

2 answer(s)
Сергей Соколов, 2022-04-12
@sergiks

попробуйте через переменную:

map $scheme $upstream_main {
  default app;
}

upstream bundle {
    server $upstream_main;
    server fallback backup;
}

B
bengur2, 2022-04-12
@bengur2 Автор вопроса

Есть статья:
https://www.nginx.com/blog/dns-service-discovery-n...
Там описано 5 методов для разрешения хостов.
Из них 3 метода для бесплатной версии Nginx.
В методе 2 описано использование upstream, но сервер не поднимается, если хост недоступен.
В методе 3 описано использование переменных, и сервер запустится в любом случае, но нельзя использовать upstream.
Неужели upstream и принудительный запуск - это конфликтующие хотелки?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question