История изменений
Исправление Pinkbyte, (текущая версия) :
Nginx по умолчанию по разному резолвер использует.
Если как у ТСа через
set $variable "http://backend:port";
proxy_pass $variable;
Есть еще те, кто настраивают DNS по древним методичкам и у них там TTL сутки стоит. Какой TTL отдаёт docker-овский DNS - я даже проверять не стал, с дефолтными настройками он меня не устраивал.
А вот если настраивать сразу, без переменной:
proxy_pass "http://backend:port";
то оно мало того, что резолвится строго ОДИН раз(и тут почему-то прекрасно работает системный резолвер, удивительно прям) при старте nginx(ну может еще при перечитывании конфига, тут не проверял), так еще и если адрес хотя бы одного backend не резолвится вообще - то nginx не стартует с соответсвующей ошибкой в логах :-)
Пока nginx стартует позже всех сервисов - это можно и не заметить, но рано или поздно эту особенность конфигурации придется осознать, принять и сделать всё правильно.
Исходная версия Pinkbyte, :
Nginx по умолчанию по разному резолвер использует.
Если как у ТСа через
set $variable "http://backend:port";
proxy_pass $variable;
А вот если настраивать сразу, без переменной:
proxy_pass "http://backend:port";
то оно мало того, что резолвится строго ОДИН раз при старте nginx(ну может еще при перечитывании конфига, тут не проверял), так еще и если адрес хотя бы одного backend не резолвится вообще - то nginx не стартует с соответсвующей ошибкой в логах :-)
Пока nginx стартует позже всех сервисов - это можно и не заметить, но рано или поздно эту особенность конфигурации придется осознать, принять и сделать всё правильно.