原地址https://zhidao.baidu.com/question/537772935.html ,把原地址贴出来,因为觉得这个作者写的不错,发现他在贴吧的一些回答,对nginx应该是比较了解的,可以去关注他。
在nging的早期版本,nginx重启需要通过kill 命令想nginx发送信号来实现nginx的重启。
但是现在nginx 增加了 -s 选项, 实现nginx的停止,重新加载的功能。
1.如果是平滑的重启nginx,可以用./nginx -s reload 命令来实现 nginx 的平滑重启。
2.如果是非平滑的重启,则可以先停止nginx,然后再启动; ./nginx -s stop && ./nginx
当我们修改nginx 配置后,希望重启nginx以便让nginx生效,此时为了保证nginx在重启阶段还能够正常提供服务,一般采用平滑重启的方式(reload)重启nginx,此时,nginx或加载新的配置,然后fork出新的worker进程。同时,naster 进程会向老的worker进程发送信息号,告诉老的worker进程当前的情况,老的worker进程收到maser进程的信号后,如果但是没有处理请求则会退出,如果在处理请求,则老的worker进程会处理完请求然后退出。nginx近视通过这种方式去reload新的配置,从而使得在重启的过程中,仍然可以提供服务。