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.

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

[Service]
LimitNOFILE=60000


Zach

From: nginx <nginx-boun...@nginx.org> On Behalf Of Zach Mitchell
Sent: Friday, May 22, 2020 11:49 AM
To: nginx@nginx.org
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.

Zach

From: nginx <nginx-boun...@nginx.org<mailto:nginx-boun...@nginx.org>> On Behalf 
Of Moshe Katz
Sent: Friday, May 22, 2020 11:31 AM
To: nginx@nginx.org<mailto:nginx@nginx.org>
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:

```
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
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

[Install]
WantedBy=multi-user.target
```

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


On Fri, May 22, 2020 at 10:59 AM Zach Mitchell 
<zlmit...@syr.edu<mailto:zlmit...@syr.edu>> 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

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
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
PrivateTmp=true

[Install]
WantedBy=multi-user.target

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.

Zach
_______________________________________________
nginx mailing list
nginx@nginx.org<mailto:nginx@nginx.org>
http://mailman.nginx.org/mailman/listinfo/nginx
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to