How to correctly restart nginx?

Hello,

I got some problem to restart nginx. I am running RHEL5 and using 0.6.33
rpm
version.I changed some rewrite rules in nginx.conf and want to restart
it.

When I tried :

/etc/init.d/nginx restart

It will only stop nginx. Then I type:

/etc/init.d/nginx status

I still see there are some processes running.

So, I kill all those processes and start nginx again. But my site is not
working anymore. It just redirect me to a 50x error page. I need to
reboot
the server to get the sites running again.

Could anyone tell me what’s the correct way to restart nginx? Thanks a
lot.

Max

You should not to restart nginx after applying new configuration.

ps aux | egrep ‘(PID|nginx)’

and kill the PID

kill -HUP PID

Have you tried (as root):
service nginx restart
-or-
service nginx stop && service nginx start


Kevin W.

Thanks a lot for your all you guys. I will try to see if I can restart
it
correctly.

Max

The old school command.

kill -HUP cat /var/run/nginx.pid

Regards.

On Wed, Feb 18, 2009 at 12:52 AM, Kevin W.

AFAIK kill -HUP will not kill the process but rather make it read its
configuration file )which is what the OP wants anyway).

You could also try /etc/init.d/nginx restart
Works on Debian, might work on RH. Find the directory for your
distro’s startup scripts, one of them oughta be nginx, pass “restart”
to it.

Nuno Magalhães
LU#484677

On Wed, Feb 18, 2009 at 12:36:39PM +0000, Nuno Magalh??es wrote:

AFAIK kill -HUP will not kill the process but rather make it read its
configuration file )which is what the OP wants anyway).

You could also try /etc/init.d/nginx restart
Works on Debian, might work on RH. Find the directory for your
distro’s startup scripts, one of them oughta be nginx, pass “restart”
to it.

Have not Linux init scripts a “reload” option to gracefully restart
service
using -HUP ?

Igor S. wrote:

Have not Linux init scripts a “reload” option to gracefully restart service
using -HUP ?

Hi,

I use the following under Ubuntu - and restart works fine since I
changed the sleep 1 to sleep 2.

This is /etc/init.d/nginx - you will need to chmod +x /etc/init.d/nginx
before use.

#! /bin/sh

BEGIN INIT INFO

Provides: nginx

Required-Start: $all

Required-Stop: $all

Default-Start: 2 3 4 5

Default-Stop: 0 1 6

Short-Description: starts the nginx web server

Description: starts nginx using start-stop-daemon

END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nginx
NAME=nginx
DESC=nginx
test -x $DAEMON || exit 0

Include nginx defaults if available

if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi
set -e
case “$1” in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid
–exec $DAEMON – $DAEMON_OPTS
echo “$NAME.”
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec
$DAEMON
echo “$NAME.”
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec
$DAEMON
sleep 2
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid
–exec $DAEMON – $DAEMON_OPTS
echo “$NAME.”
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON
echo “$NAME.”
;;
*)
N=/etc/init.d/$NAME
echo “Usage: $N {start|stop|restart|reload|force-reload}” >&2
exit 1
;;
esac
exit 0

regards

Ian

Hi,

I find “reload” can get the job done.

But if I wantt o enable #gzip on; , I still need to reboot the server
after
I changed the conf file (I am not 100% sure about this, but all my
stuffs
working after I reboot the server, I can’t just use “reload” comand to
get
it works").

At first, I just think the restart process is just like apache, but
nginx
really does it better. You can archive zero downtime time if you restart
it
correctly :-).

Max