Nginx平滑启动

在使用Nginx的过程中,如果修改了Nginx的配置文件nginx.conf,需要重启Nginx。此时,可以通过发送系统信号给Nginx的主进程的方式来进行重启。

1
2
3
4
5
[root@iZbp15pfzhnlrnbckvwflmZ conf]# ps -ef | grep nginx
root 23013 1 0 10:02 ? 00:00:00 nginx: master process ./nginx -c /usr/local/webserver/nginx/conf/nginx.conf
nobody 23014 23013 0 10:02 ? 00:00:31 nginx: worker process
root 25400 25361 0 14:49 pts/3 00:00:00 grep nginx
[root@iZbp15pfzhnlrnbckvwflmZ conf]# kill -HUP 23013

当Nginx接收到HUP信号之后,它会尝试解析指定的配置文件,如果可以使用,就应用新的配置文件,否则使用默认的配置文件。

如果解析成功,Nginx重新打开日志文件或监听的套接字,Nginx运行新的的工作进程,并从容关闭旧的工作进程,通知工作进程监听套接字,但是,继续为当前连接的客户提供服务,所有客户端的服务完成之后,旧的工作进程将关闭。

如果,新的配置文件应用失败,Nginx将继续使用旧的配置进行工作。

可以使用以下指令来检测配置文件是否正确:

切换到nginx的sbin目录下

1
# ./nginx -t

如果配置文件正确,将显示

1
2
nginx: the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful

如果配置文件有问题,将抛出异常,并标识哪一行有问题

Nginx支持的信号如下

  • TERM, INT 快速关闭
  • QUIT 从容关闭
  • HUP 平滑重启,重新加载配置文件
  • USR1 重新打开日志文件,在切割日志时用途较大
  • USR2 平滑升级可执行程序,用于Nginx程序升级时使用
  • WINCH 从容关闭工作进程