SystemdDoctor
служба не работает nginx конфигурация сертификаты

nginx: [emerg] open() failed при чтении конфигурации

Сообщение open() ... failed (2: No such file or directory) при проверке конфигурации значит, что nginx не нашёл файл, на который сослались: включаемый фрагмент, сертификат, ключ или файл с настройками. Путь в сообщении указан полностью — с него и начинается разбор.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Битая ссылка в sites-enabled

    В Debian и Ubuntu включённые сайты — это ссылки на файлы из sites-available. После удаления или переименования исходного файла ссылка остаётся и ведёт в никуда.

  2. Файл сертификата или ключа отсутствует

    Путь указан заранее, а сертификат ещё не выпущен — типичная ситуация при первичной настройке HTTPS. nginx отказывается стартовать без файла.

  3. Нет прав на чтение файла

    Ключ сертификата с правами 0600 и владельцем root читается главным процессом nginx (он работает от root), а вот включаемые файлы в чужих каталогах могут быть недоступны.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Печатает точный путь, который не удалось открыть.

sudo nginx -t

Все битые ссылки в конфигурации nginx.

sudo find /etc/nginx -xtype l

Показывает, на каком файле остановился разбор.

sudo nginx -T 2>&1 | tail -20

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Битая ссылка в sites-enabled
Почему происходит
В Debian и Ubuntu включённые сайты — это ссылки на файлы из sites-available. После удаления или переименования исходного файла ссылка остаётся и ведёт в никуда.
Как проверить
Найдите битые ссылки.
sudo find /etc/nginx/sites-enabled -xtype l
Как исправить
Удалите битые ссылки и перепроверьте конфигурацию.
sudo find /etc/nginx/sites-enabled -xtype l -delete && sudo nginx -t
2. Файл сертификата или ключа отсутствует
Почему происходит
Путь указан заранее, а сертификат ещё не выпущен — типичная ситуация при первичной настройке HTTPS. nginx отказывается стартовать без файла.
Как проверить
Проверьте пути из директив сертификата.
sudo nginx -T 2>/dev/null | grep -E "ssl_certificate|ssl_certificate_key"
sudo ls -l /etc/letsencrypt/live/*/fullchain.pem 2>/dev/null
Как исправить
Сначала получите сертификат по HTTP, затем включайте блок с HTTPS. Обратный порядок не работает: сервер не поднимется и проверку владения доменом пройти будет нечем.
3. Нет прав на чтение файла
Почему происходит
Ключ сертификата с правами 0600 и владельцем root читается главным процессом nginx (он работает от root), а вот включаемые файлы в чужих каталогах могут быть недоступны.
Как проверить
Пройдите по пути целиком.
namei -l /etc/nginx/snippets/ssl.conf
Как исправить
Исправьте права на файл и на каталоги по пути.

Пример вывода

Ссылка в sites-enabled ведёт на удалённый файл. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

nginx[4120]: nginx: [emerg] open() "/etc/nginx/sites-enabled/old-site.conf" failed (2: No such file or directory) in /etc/nginx/nginx.conf:62
nginx[4120]: nginx: configuration file /etc/nginx/nginx.conf test failed
systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация nginx: include и ssl_certificate документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено удалением файла, на который ссылается sites-enabled.
    собственная проверка, systemd 255
    сверено 15 сентября 2026