Ежедневно происходит сбой nginx и error.log ничего не показывает - PullRequest
0 голосов
/ 24 июня 2018

У меня настроен сервер nginx в качестве обратного прокси-сервера, который, похоже, ежедневно выходит из строя.До этого никогда не было проблем с сервером, но недавно (месяц или около того) я начал замечать, что nginx не работает, и мне нужно было войти на сервер, чтобы снова запустить процесс.

У меня проблемы с поиском чего-нибудь полезного в журналах.Буду признателен за помощь в диагностике проблемы.

версия nginx: nginx / 1.10.3 (Ubuntu)

os: Ubuntu 16.04.4 LTS (работает в LXC)

# systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2018-06-23 21:49:46 UTC; 1min 23s ago
Process: 13485 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=1/FAILURE)
Process: 13402 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 13401 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 13403 (code=exited, status=0/SUCCESS)

Jun 23 10:30:17 nginx systemd[1]: Starting A high performance web server and a reverse proxy server...
Jun 23 10:30:17 nginx systemd[1]: Started A high performance web server and a reverse proxy server.

cat /var/log/nginx/error.log

2018/06/23 21:49:46 [notice] 13484#13484: signal process started

В файле access.log нет ничего подозрительного.

Дайте мне знать, если есть ещеинформация, которая будет полезна

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

У меня была та же проблема, и это был тот же источник ошибки: certbot выключал сервер nginx и не мог запустить его снова после обновления.

ПРОБЛЕМА:

Вы можете проверить, не столкнулись ли вы с той же проблемой, проверив следующие журналы. Первые журналы nginx:

tail -n 100 /var/log/nginx/error.log

Результат:

2019/02/05 12:07:37 [notice] 1629#1629: signal process started
2019/02/05 12:07:37 [error] 1629#1629: open() "/run/nginx.pid" failed (2: No such file or directory)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to 0.0.0.0:80 failed (98: Address already in use)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to 0.0.0.0:443 failed (98: Address already in use)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to [::]:443 failed (98: Address already in use)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to 0.0.0.0:444 failed (98: Address already in use)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to [::]:444 failed (98: Address already in use)
[...]
2019/02/05 12:07:38 [emerg] 1655#1655: still could not bind()
2019/02/05 12:07:41 [alert] 1631#1631: unlink() "/run/nginx.pid" failed (2: No such file or directory)

Мы видим, что nginx безуспешно пытается перезапуститься.

Вы также можете проверить системный журнал:

tail -n 100 /var/log/syslog

И найдите ту же метку времени:

Feb  5 12:07:30 systemd[1]: Starting Certbot...
Feb  5 12:07:31 systemd[1]: Stopping A high performance web server and a reverse proxy server...
Feb  5 12:07:31 systemd[1]: Stopped A high performance web server and a reverse proxy server.
Feb  5 12:07:38 systemd[1]: Starting A high performance web server and a reverse proxy server...

Мы видим, что проблема связана с certbot.

РЕШЕНИЕ:

В моем случае у меня была старая версия certbot. Вы можете проверить свою версию, используя команду certbot --version. В моем случае у меня было certbot 0.10.2 ...

Итак, прежде всего, обновите приложение certbot и добавьте плагин nginx:

sudo apt-get update
sudo apt-get install certbot python-certbot-nginx

Проверьте вашу новую версию: certbot --version -> certbot 0.28.0.

Затем вам нужно будет изменить файлы конфигурации обновления в соответствии с новой версией и с помощью плагина nginx. Файл conf продлен в каталоге /etc/letsencrypt/renewal/*. Обратите внимание, что документация certbot не рекомендует изменять их вручную ...

Я изменяю все файлы конфигурации обновления с:

# renew_before_expiry = 30 days
version = 0.10.2
archive_dir = /etc/letsencrypt/archive/yourdomain
cert = /etc/letsencrypt/live/yourdomain/cert.pem
privkey = /etc/letsencrypt/live/yourdomain/privkey.pem
chain = /etc/letsencrypt/live/yourdomain/chain.pem
fullchain = /etc/letsencrypt/live/yourdomain/fullchain.pem

# Options used in the renewal process
[renewalparams]
authenticator = standalone
post_hook = service nginx start
account = yourkey
pre_hook = service nginx stop
installer = nginx

Кому:

# renew_before_expiry = 30 days
version = 0.28.0
archive_dir = /etc/letsencrypt/archive/yourdomain
cert = /etc/letsencrypt/live/yourdomain/cert.pem
privkey = /etc/letsencrypt/live/yourdomain/privkey.pem
chain = /etc/letsencrypt/live/yourdomain/chain.pem
fullchain = /etc/letsencrypt/live/yourdomain/fullchain.pem

# Options used in the renewal process
[renewalparams]
account = yourkey
server = https://acme-v02.api.letsencrypt.org/directory
authenticator = nginx
installer = nginx

(обратите внимание, что были изменены только строки аутентификатора версии и , добавлена ​​строка server и pre_hook и post_hook строк было удалено).

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

certbot renew --dry-run

Для каждого сертификата вы должны получить следующее: без красной ошибки :

new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/yourdomain/fullchain.pem
0 голосов
/ 24 июня 2018

Похоже, что решение проблемы было найдено в /var/log/syslog.certbot выключал сервер nginx, чтобы попытаться обновить сертификаты, но из-за некоторых проблем с конфигурацией (по моей вине) произошел сбой, и сервер nginx снова не включился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...