Ошибка nginx open() failed (2: No such file or directory)
nginx не нашёл файл по пути в кавычках. Если в строке есть слова client и request, посетитель запросил файл, которого нет, — это ошибка 404. Если nginx не запускается, нет файла настроек или папки для журнала.
Содержание 11
Что сделать прямо сейчас
- Найдите в таблице ниже, на что похоже ваше сообщение.
- Сделайте то, что написано в разделе для вашего случая.
- Если правили настройки — проверьте и примените их.
Все команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
Что значит это сообщение
open() — функция, которой программа открывает файл. 2: No such file or directory — «нет такого файла или папки». Путь в кавычках — тот, который nginx пытался открыть. Дата, время и номер процесса у вас будут свои. В других сборках nginx та же строка начинается со слов nginx: [emerg].
| На что похоже сообщение | Что случилось |
|---|---|
[error], в конце есть client, request и host | Посетитель запросил файл, которого нет, — если файла нет для посетителя |
[emerg], путь в /etc/nginx/sites-enabled/, в конце in /etc/nginx/nginx.conf:60 | Битая ссылка — если в sites-enabled битая ссылка |
[emerg], в конце in и путь к файлу сайта | Строка include ведёт к файлу, которого нет, — если include ведёт к файлу, которого нет |
[emerg], путь к файлу .log, в конце нет in | Нет папки для журнала — если нет папки для журнала |
Если файла нет для посетителя
2026/10/09 12:00:00 [error] 2346#2346: *15 open() "/var/www/example.com/favicon.ico" failed (2: No such file or directory), client: 203.0.113.5, server: example.com, request: "GET /favicon.ico HTTP/1.1", host: "example.com"Такая строка появляется в журнале /var/log/nginx/error.log, пока nginx работает: он запущен, просто запрошенного файла нет — посетитель получил ошибку 404. После request: — адрес, который открывали, а путь в кавычках — где nginx искал файл: папка из строки root плюс адрес.
Если в блоке location есть строка try_files $uri $uri/ =404; — она стоит в стандартных настройках Ubuntu, — ненайденные файлы в журнал ошибок не попадают. Их видно в журнале запросов /var/log/nginx/access.log с кодом 404.
Если файла не хватает на самом деле — например, картинки или favicon.ico — положите его в эту папку. Если в пути не та папка, где лежат файлы сайта, исправьте строку root в файле сайта. Посмотреть, что лежит в папке:
ls -l /var/www/example.com/Подробнее — на странице 404 Not Found.
Если в sites-enabled битая ссылка
2026/10/09 12:00:00 [emerg] 2345#2345: open() "/etc/nginx/sites-enabled/example.com" failed (2: No such file or directory) in /etc/nginx/nginx.conf:60
nginx: configuration file /etc/nginx/nginx.conf test failedВ папке sites-enabled лежит ссылка, которая никуда не ведёт: оригинал в sites-available удалили, переименовали, или ссылку создали с неверным путём. Строка 60 в nginx.conf — та, что подключает все файлы из sites-enabled. Найдите битые ссылки:
find -L /etc/nginx/sites-enabled/ -type lКоманда покажет только битые ссылки. Удалите такую ссылку — оригинал она не затронет:
sudo rm /etc/nginx/sites-enabled/example.comЕсли сайт нужен, проверьте, что его файл есть в sites-available, и создайте ссылку заново. Пишите оба пути целиком, от /etc:
ls -l /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/Если include ведёт к файлу, которого нет
2026/10/09 12:00:00 [emerg] 2345#2345: open() "/etc/nginx/snippets/ssl-params.conf" failed (2: No such file or directory) in /etc/nginx/sites-enabled/example.com:12
nginx: configuration file /etc/nginx/nginx.conf test failedСтрока include подключает к настройкам другой файл, а этого файла нет. Файл сайта скопировали с другого сервера или из инструкции, а подключаемый файл — нет. Откройте файл из сообщения сразу на нужной строке: число после знака + — номер строки из сообщения, путь — тот, что стоит перед двоеточием.
sudo nano -l +12 /etc/nginx/sites-available/example.comЕсли в сообщении путь начинается с /etc/nginx/sites-enabled/, откройте файл с тем же именем в папке /etc/nginx/sites-available/ — там лежит оригинал, а в sites-enabled только ссылка на него. Как это проверить, написано в разделе «Какой файл открывать».
Посмотрите, какие файлы есть в папке из пути:
ls -l /etc/nginx/snippets/Если файл лежит под другим именем, исправьте имя в строке include. Если его нет, поставьте в начале строки include решётку # — nginx перестанет её читать. Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.
Если нет папки для журнала
2026/10/09 12:00:00 [emerg] 2345#2345: open() "/var/log/nginx/example.com/error.log" failed (2: No such file or directory)В строке error_log или access_log указан путь к файлу журнала в папке, которой нет. Сам файл nginx создаст, а папку — нет. Создайте её:
sudo mkdir -p /var/log/nginx/example.comИли поменяйте путь в строке на папку, которая уже есть, — например, /var/log/nginx/example.com.error.log. Найти строку поможет команда:
sudo grep -Rn '_log ' /etc/nginx/sites-enabled/ /etc/nginx/conf.d/Проверьте и примените настройки
Проверьте настройки ещё раз командой sudo nginx -t. Когда в ответе будут слова syntax is ok и test is successful, примените их:
sudo systemctl reload nginxЕсли команда ничего не ответила, настройки применены.
Как проверить
sudo nginx -t отвечает syntax is ok и test is successful. Для файла, которого не было у посетителя, откройте его адрес в браузере: вместо 404 должен открыться файл.
Похожие ошибки
| Сообщение | Чем отличается |
|---|---|
| open() … failed (13: Permission denied) | Файл есть, но прав не хватает — см. 403 Forbidden и nginx -t: Permission denied |
| cannot load certificate | Не найден файл сертификата |
| Job for nginx.service failed | systemctl пишет, что nginx не запустился, — причина в журнале |
Тексты сообщений на этой странице сверены с исходным кодом nginx 1.24.0 — эта версия стоит в Ubuntu 24.04. В других версиях слова могут немного отличаться.
Источники
- Исходный код nginx 1.24.0: ngx_http_static_module.c — строка open() failed во время работы.
- Исходный код nginx 1.24.0: ngx_http_try_files_module.c — с try_files ненайденный файл в журнал ошибок не пишется.
- Файл sites-available/default из пакета nginx в Ubuntu 24.04 — строка try_files.
- Исходный код nginx 1.24.0: ngx_conf_file.c — open() failed для файлов настроек и include.
- Исходный код nginx 1.24.0: ngx_cycle.c — open() failed для файлов журнала.
- Файл nginx.conf из пакета nginx в Ubuntu 24.04 — строка 60 подключает файлы из sites-enabled.
- man find — с ключом -L условие -type l выполняется только для битых ссылок.
- man ln, man mkdir.
Сверено 9–10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026