nginx 1.18.0 does not reload on ubuntu 18.04

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

nginx 1.18.0 does not reload on ubuntu 18.04

Zach Mitchell

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
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

Re: nginx 1.18.0 does not reload on ubuntu 18.04

Moshe Katz

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 <[hidden email]> 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
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx

_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

RE: nginx 1.18.0 does not reload on ubuntu 18.04

Zach Mitchell

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 <[hidden email]> On Behalf Of Moshe Katz
Sent: Friday, May 22, 2020 11:31 AM
To: [hidden email]
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 <[hidden email]> 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
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx


_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

RE: nginx 1.18.0 does not reload on ubuntu 18.04

Zach Mitchell

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 <[hidden email]> On Behalf Of Zach Mitchell
Sent: Friday, May 22, 2020 11:49 AM
To: [hidden email]
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 <[hidden email]> On Behalf Of Moshe Katz
Sent: Friday, May 22, 2020 11:31 AM
To: [hidden email]
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 <[hidden email]> 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
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx


_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx