Что это значит

nginx попытался открыть соединение с сервисом, и на том конце порт никто не слушает. Пользователь видит 502. Сервис не запущен, как раз перезапускается или запущен на другом порту или адресе.

Родственные сообщения: no live upstreams означает, что недоступны все экземпляры сервиса. upstream prematurely closed connection означает, что сервис принял запрос и оборвал соединение, обычно упал в процессе.

Как проверить

Адрес и порт сервиса есть в строке лога после upstream:.

ss -ltnp | grep <порт>
systemctl status <служба>
docker ps -a --format '{{.Names}}\t{{.Status}}'

Статус Restarting или частые перезапуски у контейнера указывают на падение при старте.

Что сделать

  1. Запустить сервис и прочитать его лог за время падения: причина там.
  2. Если сервис убит по памяти (код выхода 137), см. статью про OOMKilled.
  3. Короткие 502 во время обновления или перезапуска нормальны. Чтобы их не было, нужны несколько экземпляров и проверка готовности.
  4. Сверить порт и адрес в настройках nginx с тем, что слушает сервис. После переезда в контейнеры адреса часто меняются.