есть "головной" сервер Nginx, проксирующий запросы на дочерние серверы, в формате proxy_pass: containeer1, container2, container3;. Но, на момент его запуска и в процессе работы список этих самых контейнеров может меняться и некоторые из них могут (и должны) быть исходно выключены, и как следствие — соответствующих хостов — нет, из-за чего Nginx падает с ошибкой host not found in upstream. Проблему обсуждают последние лет 5+, но внятного решения я так и не нашел...
Что пробовал:
1. Пытался настроить DNS, который бы на любой несуществующий запрос домена возвращал бы ответ по типу: 127.0.0.1 — не получилось
2. Хотел настроить всем контейнерам IP-адреса статические — но эта идея мне что-то совсем не нравится... Возможно я не слишком хорошо разбираюсь в сетях и можно как-то создать отдельную подсеть со статическими IP-адресами в которой будут сидеть только Nginx'ы? Не затрагивая при этом основные механики докера и не нарушая работу прочих контейнеров
3. Заменить Nginx на какой-то прокси, но, не хотелось бы этого делать
Возможно кто-то уже сталкивался с подобным, подскажите, как вам удалось это решить?
Я из-за этого начал пробовать traefik вместо nginx :) Он поддерживает автоматическое определение докер-контейнеров
Звучит хорошо! Подскажите пожалуйста, я вижу там порты 443 и что-то даже про Let's encrypt... А если сертификаты готовые уже есть — их можно trafik'у подсунуть?
Судя по всему, подсунуть можно: https://traefik.io/blog/traefik-2-tls-101-23b4fbee81f1/ Там много полезного, но конкретный ответ в разделе "Add the Certificates to the Configuration File" Дисклеймер: я пока только знакомлюсь с траефиком, он сам выпускает новые сертификаты от LE, моя задача лишь прописывать A-записи у хостера
Спасибо большое за помощь и наводку! Пойду сейчас документацию читать... Про сертификаты от LA — это в целом хороший вариант, но у нас уже готовый сертификат и он Wildcard, не хотелось бы его менять. Ещё раз спасибо! (пошел пробовать)
Обсуждают сегодня