systemd: do not rely on racy heuristics to determine master PID This fixes reloads and stops when systemd is unable to guess master process PID due to a race described in https://trac.nginx.org/nginx/ticket/1897 While we wait for a proper fix is introduced in either nginx or systemd via Type=forking, the workaround is not to rely on possibly unset variables, but hardcode the path to PID file instead where we need it.
diff --git a/debian/nginx-debug.service b/debian/nginx-debug.service index 142d2a6..af0bba4 100644 --- a/debian/nginx-debug.service +++ b/debian/nginx-debug.service
@@ -8,8 +8,8 @@ Type=forking PIDFile=/var/run/nginx.pid ExecStart=/usr/sbin/nginx-debug -c /etc/nginx/nginx.conf -ExecReload=/bin/kill -s HUP $MAINPID -ExecStop=/bin/kill -s TERM $MAINPID +ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)" +ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)" [Install] WantedBy=multi-user.target
diff --git a/debian/nginx.service b/debian/nginx.service index 23eb0ed..e509a2e 100644 --- a/debian/nginx.service +++ b/debian/nginx.service
@@ -8,8 +8,8 @@ Type=forking PIDFile=/var/run/nginx.pid ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf -ExecReload=/bin/kill -s HUP $MAINPID -ExecStop=/bin/kill -s TERM $MAINPID +ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)" +ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)" [Install] WantedBy=multi-user.target
diff --git a/rpm/SOURCES/nginx-debug.service b/rpm/SOURCES/nginx-debug.service index 142d2a6..af0bba4 100644 --- a/rpm/SOURCES/nginx-debug.service +++ b/rpm/SOURCES/nginx-debug.service
@@ -8,8 +8,8 @@ Type=forking PIDFile=/var/run/nginx.pid ExecStart=/usr/sbin/nginx-debug -c /etc/nginx/nginx.conf -ExecReload=/bin/kill -s HUP $MAINPID -ExecStop=/bin/kill -s TERM $MAINPID +ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)" +ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)" [Install] WantedBy=multi-user.target
diff --git a/rpm/SOURCES/nginx.service b/rpm/SOURCES/nginx.service index 23eb0ed..e509a2e 100644 --- a/rpm/SOURCES/nginx.service +++ b/rpm/SOURCES/nginx.service
@@ -8,8 +8,8 @@ Type=forking PIDFile=/var/run/nginx.pid ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf -ExecReload=/bin/kill -s HUP $MAINPID -ExecStop=/bin/kill -s TERM $MAINPID +ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)" +ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)" [Install] WantedBy=multi-user.target