Ошибки

Ошибки nginx: все сообщения и что они значат

Введите на сервере sudo nginx -t: команда покажет текст ошибки, файл и номер строки. Найдите начало этого текста в таблицах и откройте разбор — в нём по шагам, что исправить.

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

Как увидеть ошибку

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

sudo nginx -t

Если настройки в порядке, ответ будет таким:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Если в настройках ошибка, nginx выведет строку с ней, а последней строкой — test failed:

2026/10/09 12:00:00 [emerg] 2345#2345: unknown directive "servr_name" in /etc/nginx/sites-enabled/example.com:4
nginx: configuration file /etc/nginx/nginx.conf test failed

Что есть в строке с ошибкой:

  • 2026/10/09 12:00:00 — дата и время;
  • [emerg] — с такой ошибкой nginx работать не будет. Если вместо этого стоит [warn], это предупреждение: nginx запустится, но часть настроек будет работать не так, как вы задумали;
  • 2345#2345 — номер процесса, для поиска ошибки он не нужен;
  • дальше текст ошибки — его ищите в таблицах ниже;
  • in /etc/nginx/sites-enabled/example.com:4 — файл и номер строки, где nginx заметил ошибку. У части сообщений файла и строки нет — тогда в разборе сказано, где искать.

Дата, время и номер процесса у вас будут свои. В других сборках nginx та же строка начинается со слов nginx: [emerg].

Если nginx не запускается

Если ошибку вывела команда sudo systemctl start nginx или sudo systemctl restart nginx, в ответе будет только Job for nginx.service failed — без причины. Сначала введите sudo nginx -t. Если проверка прошла, а nginx всё равно не запускается, посмотрите последние строки журнала ошибок:

sudo tail -n 20 /var/log/nginx/error.log

Самая нижняя строка — самая свежая. Найдите текст после [emerg] в таблицах ниже.

Какой файл открывать

В Ubuntu файлы сайтов хранятся в папке /etc/nginx/sites-available/, а в папке /etc/nginx/sites-enabled/ лежат ссылки на них: так nginx узнаёт, какие сайты включены. Поэтому путь в сообщении об ошибке ведёт в sites-enabled, а править нужно оригинал. Посмотрите, что лежит в sites-enabled:

ls -l /etc/nginx/sites-enabled/
total 0
lrwxrwxrwx 1 root root 34 Oct  9 12:00 default -> /etc/nginx/sites-available/default
lrwxrwxrwx 1 root root 38 Oct  9 12:00 example.com -> /etc/nginx/sites-available/example.com

Стрелка -> значит, что это ссылка, а справа от стрелки — путь к настоящему файлу. Его и открывайте. Если стрелки у файла нет, это сам файл — открывайте его по пути из сообщения.

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

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

Ключ -l включает номера строк слева, +4 ставит курсор сразу на строку 4. Сохранить файл — Ctrl+O и Enter, выйти — Ctrl+X. Подробнее о редакторе — в разделе про nano.

Номер строки — место, где nginx заметил ошибку. Если строка выглядит правильно, посмотрите строку выше: забытая точка с запятой в конце одной строки даёт ошибку на следующей.

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

sudo systemctl reload nginx

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

Ошибки в тексте настроек

СообщениеЧто значит
unknown directivenginx не знает такого слова: опечатка, строка из настроек Apache или модуль не установлен
directive is not allowed hereДиректива стоит не в том блоке — например, location вне server
unexpected end of file, expecting "}"Не хватает закрывающей фигурной скобки
unexpected "}"Лишняя скобка или забыта точка с запятой перед ней
directive … is not terminated by ";"Забыта точка с запятой перед строкой с открывающей скобкой
directive … has no opening "{"После location или server нет открывающей скобки
invalid number of argumentsУ директивы больше или меньше значений, чем нужно
invalid parameterВ строке listen лишнее слово — забыта точка с запятой

Имена сайтов и порты

СообщениеЧто значит
bind() to 0.0.0.0:80 failed (98: Address already in use)Порт занят другой программой — Apache, контейнером Docker или второй копией nginx
still could not bind()То же: nginx так и не смог занять порт
conflicting server nameОдно имя сайта стоит в двух блоках server — это предупреждение
could not build server_names_hashДлинное имя сайта — нужно увеличить server_names_hash_bucket_size
a duplicate default serverДва блока server с default_server на одном порту
a duplicate listenОдинаковая строка listen дважды в одном блоке server
duplicate locationДва одинаковых location в одном блоке server

HTTPS и сертификаты

СообщениеЧто значит
cannot load certificateФайла сертификата или ключа нет по указанному пути, или его не прочитать
no "ssl_certificate" is defined for the "listen ... ssl" directiveВ блоке есть listen 443 ssl, а строки ssl_certificate нет
key values mismatchСертификат и ключ — от разных пар

Запуск, файлы и права

СообщениеЧто значит
Job for nginx.service failednginx не запустился — причина в другом сообщении, разбор подскажет, где его найти
host not found in upstreamВ proxy_pass имя, которого сервер не знает
open() … failed (2: No such file or directory)Нет файла или папки из настроек
open() "/run/nginx.pid" failed (13: Permission denied)Команда nginx -t запущена без sudo

Ошибки, которые видны в браузере

Если nginx работает, а сайт открывается с ошибкой, смотрите разборы кодов ответа:

Что видно в браузереЧто значит
502 Bad Gatewaynginx не получил ответа от программы сайта
504 Gateway TimeoutПрограмма сайта отвечает слишком долго
403 Forbiddennginx не может или не должен показывать эту страницу
404 Not FoundНет такой страницы или файла
413 Request Entity Too LargeЗагружаемый файл больше, чем разрешено
ERR_CONNECTION_REFUSEDБраузер не смог подключиться — nginx не запущен или порт закрыт

Откуда тексты

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

Источники

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

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

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