Ошибки

Ошибка nginx host not found in upstream: неизвестное имя в proxy_pass

В строке proxy_pass стоит имя, которое сервер не знает. Если приложение работает на этом же сервере, напишите вместо имени адрес 127.0.0.1 и порт приложения.

Обновлено 10.10.2026≈ 5 мин чтения
Содержание 9

Что сделать прямо сейчас

  1. Откройте файл на строке из сообщения — шаг 1.
  2. Приложение на этом же сервере — поставьте вместо имени 127.0.0.1: приложение на этом же сервере.
  3. Проверьте и примените настройки — шаг 3.

Все команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

Что значит это сообщение

2026/10/09 12:00:00 [emerg] 2345#2345: host not found in upstream "app:3000" in /etc/nginx/sites-enabled/example.com:14
nginx: configuration file /etc/nginx/nginx.conf test failed

host not found in upstream — «адрес не найден». Имя из строки proxy_pass nginx превращает в IP-адрес ещё при запуске. Если адрес найти не удалось, nginx не запускается. В кавычках — имя и порт из настроек, после слова in — файл и номер строки. Дата, время и номер процесса у вас будут свои. В других сборках nginx та же строка начинается со слов nginx: [emerg].

Причины:

  • имя взято из инструкции для Docker. Там у приложений свои имена — например, app или backend, — но знают их только программы внутри Docker, а nginx на сервере — нет;
  • в строке proxy_pass http://backend; указано имя блока upstream, а блока с таким именем нет или в имени опечатка;
  • в адресе другого сервера опечатка или у домена нет DNS-записи.

Шаг 1. Откройте файл на строке из сообщения

Откройте файл из сообщения сразу на нужной строке: число после знака + — номер строки из сообщения, путь — тот, что стоит перед двоеточием.

sudo nano -l +14 /etc/nginx/sites-available/example.com

Если в сообщении путь начинается с /etc/nginx/sites-enabled/, откройте файл с тем же именем в папке /etc/nginx/sites-available/ — там лежит оригинал, а в sites-enabled только ссылка на него. Как это проверить, написано в разделе «Какой файл открывать».

Курсор встанет на строку с proxy_pass, например:

        proxy_pass http://app:3000;

Шаг 2. Найдите свой случай

Приложение на этом же сервере

Если приложение — сайт на Node.js или Python — работает на этом же сервере, пишите вместо имени адрес 127.0.0.1 — так сервер обращается сам к себе. Порт оставьте тот, на котором работает приложение:

        proxy_pass http://127.0.0.1:3000;

Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.

Имя из блока upstream

Если в строке proxy_pass стоит имя без точки — например, http://backend — nginx ищет блок upstream с таким именем. Пример такого блока:

upstream backend {
    server 127.0.0.1:3000;
}

Блок upstream пишут в том же файле выше блока server — не внутри него. Имя после слова upstream должно совпадать с именем в proxy_pass буква в букву.

Если ошибка указывает на строку server внутри блока upstream, в этой строке тоже неизвестное имя. Поставьте вместо него 127.0.0.1, как в разделе приложение на этом же сервере.

Адрес другого сервера

Если приложение на другом сервере и в proxy_pass его домен, проверьте, знает ли сервер этот домен:

getent hosts api.example.com

Если команда ответила IP-адресом, имя находится. Если не ответила ничего, сервер адрес не нашёл: проверьте, нет ли опечатки, и есть ли у домена DNS-запись.

Шаг 3. Проверьте и примените настройки

Проверьте настройки ещё раз командой sudo nginx -t. Когда в ответе будут слова syntax is ok и test is successful, примените их:

sudo systemctl reload nginx

Если команда ничего не ответила, настройки применены.

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

sudo nginx -t отвечает syntax is ok и test is successful. Откройте сайт. Если браузер показывает 502 Bad Gateway, nginx запустился, но приложение не отвечает на этом порту — об этом страница 502 Bad Gateway.

Похожие ошибки

СообщениеЧем отличается
502 Bad Gatewaynginx работает, но приложение по адресу из proxy_pass не отвечает
504 Gateway TimeoutПриложение отвечает слишком долго
open() failednginx не нашёл файл, а не адрес

Тексты сообщений на этой странице сверены с исходным кодом nginx 1.24.0 — эта версия стоит в Ubuntu 24.04. В других версиях слова могут немного отличаться.

Источники

Сверено 9–10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026