nginx 1.18.0 does not reload on ubuntu 18.04

Zach Mitchell zlmitche at
Fri May 22 17:50:06 UTC 2020

Finally figured it out. I enabled debug mode on the error log. It turns out setting the worker_rlimit_nofile in the nginx.conf was not working. On nginx startup it would say “getrlimit(RLIMIT_NOFILE): 1024:4096". I had already checked the security limits and they were set… I confirmed that the workers were using the worker_rlimit_nofile correctly, but the master was not able to reload correctly.

Add LimitNOFILE to the system service, on the next nginx start up the debug logs show the correct nolimt! Reloading now works! Hurray!



From: nginx <nginx-bounces at> On Behalf Of Zach Mitchell
Sent: Friday, May 22, 2020 11:49 AM
To: nginx at
Subject: RE: nginx 1.18.0 does not reload on ubuntu 18.04

I’ve also tried that “ExecReload=/bin/kill -s HUP $MAINPID” which doesn’t work either.

I’m testing by adding a new location rule and then reloading and it never gets picked up, I have to restart the nginx process and then it finally gets the new config.


From: nginx <nginx-bounces at<mailto:nginx-bounces at>> On Behalf Of Moshe Katz
Sent: Friday, May 22, 2020 11:31 AM
To: nginx at<mailto:nginx at>
Subject: Re: nginx 1.18.0 does not reload on ubuntu 18.04

I installed nginx on Ubuntu 18.04 from the nginx official repository, and the provided systemd service file is much simpler than yours. It looks like this:

Description=nginx - high performance web server

ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID


You should see if something more like that works for you.

On Fri, May 22, 2020 at 10:59 AM Zach Mitchell <zlmitche at<mailto:zlmitche at>> wrote:
I'm using a nginx 1.18.0 and 1.16.1 and when i perform a systemctl restart nginx, it does not actually reload the configs. nginx -s reload does not work either. Am i missing a configure flag that allows this to work properly?

Here is my nginx -V

built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
built with OpenSSL 1.1.1g  21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_realip_module --with-compat --with-pcre=../pcre-8.44 --with-pcre-jit --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.1g --with-openssl-opt=no-nextprotoneg --add-module=../ngx_cache_purge-2.3

Here is my systemd nginx.service

Description=The NGINX HTTP and reverse proxy server

ExecStartPre=/usr/local/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/local/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/local/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=/bin/kill -s QUIT $MAINPID


I've got a workaround, which i spawn a 2nd process and wait then kill the old, but what is the deal?

ExecReload=/bin/bash -c "/bin/kill -USR2 $MAINPID && /bin/sleep 5 && /bin/kill -WINCH $MAINPID && /bin/sleep 5 && /bin/kill -QUIT $MAINPID"

I appreciate the help! Thanks.

nginx mailing list
nginx at<mailto:nginx at>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx mailing list