遇到过很多次 修改nginx.conf 配置不生效,这种情况比较少见,排查了很久发现规则没有问题。但是转发始终没有过去。
最后杀掉nginx进程 ,重新start nginx 配置就生效了。
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
1. Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
2. Nginx启动新的worker进程,采用新的配置文件
3. Nginx将新的请求分配新的worker进程
4. Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
5. 重复上面过程,直到全部旧的worker进程都被关闭掉
参考nginx官方的相关文档。
这里我理解的意思是 等到旧worker 全部关闭成功之后新worker的配置才会生效。所以reload 成功但是配置似乎没有生效的时候 不妨看看worker进程的pid是否有变化。
类似这样的情况 连接数多的情况才会出现