nginx systemd[1]: nginx.service: Завершился с результатом ‘exit-code’

Вопрос или проблема

в соответствии с современными реалиями, я устанавливаю себе экземпляр мастодона…

когда я пытаюсь перезапустить nginx, я получаю ошибку

root@instance-20221113-1925:/home/ubuntu# sudo systemctl restart nginx
Работа для nginx.service не удалась, так как управляющий процесс завершился с кодом ошибки. 
Смотрите "systemctl status nginx.service" и "journalctl -xeu nginx.service" для получения подробностей.

вот лог (в нем говорится Nov 13 09:45:11 instance-20221113-1925 nginx[34044]: nginx: файл конфигурации /etc/nginx/nginx.conf не прошел проверку):

https://pastebin.com/bRxTA3m1

файл конфигурации (неотредактированный):

https://pastebin.com/dcK2RyCH

может ли опытный взгляд заметить ошибку? спасибо!

Может, сначала удалите nginx и переустановите его.

Список установленных пакетов, связанных с nginx, и удалите их.

dpkg --get-selections | grep nginx

sudo apt --purge remove nginx
sudo apt --purge remove nginx-common
sudo apt --purge remove nginx-core

И установите nginx снова

sudo apt install nginx

И теперь, когда я запускаю systemctl status nginx, служба активна.
nginx успешно запущен

Сообщение об ошибке указывает на отсутствие директивы ssl_certificate для директивы listen … ssl в конфигурационном файле /etc/nginx/sites-enabled/mastodon на строке 25.

Nov 13 09:44:42 instance-20221113-1925 nginx[34033]: nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/sites-enabled/mastodon:25 
Nov 13 09:44:42 instance-20221113-1925 nginx[34033]: nginx: файл конфигурации /etc/nginx/nginx.conf не прошел проверку 
Nov 13 09:44:42 instance-20221113-1925 systemd[1]: nginx.service: Управляющий процесс завершился, код=завершен, статус=1/ОШИБКА 
░░ Тема: Процесс юнита завершился

попробуйте это

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {
    sendfile on;
    tcp_nopush on;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Отключение SSLv3, ссылка: POODLE
    ssl_prefer_server_ciphers on;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name your_domain.com;

        ssl_certificate <<<<<<<</path/to/your/certificate.pem>>>>>>>;
        ssl_certificate_key <<<<<<</path/to/your/private/key.pem;

        # Дополнительные конфигурации SSL могут быть добавлены здесь

        location / {
            # proxy_set_header Host $host;
            # proxy_set_header X-Real-IP $remote_addr;
            # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # proxy_set_header X-Forwarded-Proto $scheme;
            # proxy_pass http://localhost:3000;
            # proxy_buffering off;
            # proxy_request_buffering off;
            # proxy_http_version 1.1;
            # proxy_set_header Upgrade $http_upgrade;
            # proxy_set_header Connection "upgrade";
            }
    }

}

Не забудьте заменить your_domain.com на ваше фактическое доменное имя и обновить пути для ssl_certificate и ssl_certificate_key с правильными путями к вашему SSL-сертификату и приватному ключу.

В моем случае отсутствовала запись по умолчанию в .conf файле, поэтому я создал новый файл с именем “/etc/nginx/config.d/default.conf” и написал следующие строки.

upstream frappe-bench-frappe {
    server 127.0.0.1:8000 fail_timeout=0;
}

upstream frappe-bench-socketio-server {
    server 127.0.0.1:9000 fail_timeout=0;
}

тем не менее, вы можете добавить эти строки в любой существующий .conf файл

Нашел обходное решение здесь:
инструкции certbot завершились ошибкой ssl_certificate

дополнительное примечание к инструкциям: в конце настройки IPtables выполните:

sudo iptables --flush

Ответ или решение

Ошибка, которую вы видите при попытке перезапуска Nginx (nginx.service: Failed with result 'exit-code'), указывает на то, что основной процесс Nginx завершился с ошибкой. Для выявления причины проблемы вы можете обратиться к журналам системных сообщений, используя команды systemctl status nginx.service и journalctl -xeu nginx.service.

Анализ ошибки

Согласно приведенным вами журналам, проблема заключается в следующем:

nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/sites-enabled/mastodon:25

Это сообщение указывает на то, что в конфигурационном файле, находящемся по пути /etc/nginx/sites-enabled/mastodon, отсутствует директива ssl_certificate, которая необходима для корректной работы сервера на порту 443 с включенным SSL. Директива ssl_certificate используется для указания пути к сертификату SSL, а ssl_certificate_key — для указания пути к приватному ключу.

Решение проблемы

Чтобы исправить эту ошибку, вам нужно отредактировать файл конфигурации Nginx, добавив недостающие строки. Вот пример, как можно это сделать:

  1. Откройте файл конфигурации вашего сайта:

    sudo nano /etc/nginx/sites-enabled/mastodon
  2. В разделе server, который слушает на порту 443, добавьте следующие строки, заменив пути на ваши фактические пути к файлам сертификата и ключа:

    ssl_certificate /path/to/your/certificate.pem;
    ssl_certificate_key /path/to/your/private/key.pem;

Такой участок конфигурации должен выглядеть примерно так:

server {
    listen 443 ssl;
    server_name your_domain.com;

    ssl_certificate /path/to/your/certificate.pem;
    ssl_certificate_key /path/to/your/private/key.pem;

    # Другие настройки
}

Не забудьте заменить your_domain.com на ваш фактический домен, а пути к файлам на реальные пути ваших сертификатов.

  1. После внесения изменений, проверьте конфигурацию на наличие ошибок:

    sudo nginx -t

    Если тест пройдет успешно, перезапустите службу Nginx:

    sudo systemctl restart nginx

Дополнительные рекомендации

Если после всех изменений Nginx все равно не запускается, возможно, проблема в других конфигурационных файлах. Попробуйте следующие шаги:

  1. Проверьте все файлы конфигурации Nginx, чтобы убедиться, что нет других ошибок.

  2. Убедитесь, что пакет nginx установлен корректно:

    dpkg --get-selections | grep nginx

    Если необходимо, переустановите Nginx:

    sudo apt --purge remove nginx
    sudo apt install nginx
  3. Проверьте настройки брандмауэра (iptables) и разрешите необходимые порты, если они закрыты.

Заключение

Следуя этим шагам, вы сможете устранить ошибку nginx.service: Failed with result 'exit-code' и успешно запустить ваш экземпляр Mastodon с использованием Nginx. Важно также всегда удостоверяться, что конфигурационные файлы корректны и соответствуют требованиям остановленного процесса для предотвращения подобных ошибок в будущем.

Оцените материал
Добавить комментарий

Капча загружается...