Назад | Перейти на главную страницу

Выполнение перезагрузки через systemd приводит к остановке nginx в случае неправильной конфигурации

Согласно всем документам в Интернете (и моей собственной памяти), делая systemctl reload nginx должна быть безопасной операцией, которая выполняет проверку синтаксиса конфигурации перед перезагрузкой сервера.

Тем не менее, похоже, что на моем сервере Debian это больше не работает.

("недействительно!" - вот что я добавил в конфиг)

Это файл модуля systemd, который он использует (он используется по умолчанию):

# Stop dance for nginx
# =======================
#
# ExecStop sends SIGSTOP (graceful stop) to the nginx process.
# If, after 5s (--retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

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

Так это почти как systemd как-то облажался? Тем не менее, с той же конфигурацией на других машинах перезагрузка systemd не убивает сервер.

Что мне не хватает?