Nginx:配置上次重新加载的时间是什么时候?

时间:2018-05-21 00:49:56

标签: typescript nginx ansible

我们在多台服务器上使用Nginx,目前正在运行1.11.10。

我正在创建一个Ansible脚本来部署一些配置更改。该脚本将新配置文件复制到服务器,然后发出命令以重新加载Nginx配置。

有什么方法可以确认文件已成功重新加载?在命令行中使用“systemctl status nginx”只会告诉我服务器的状态以及上次重新启动时的详细信息,而不是上次重新加载配置的时间。

非常感谢您提供任何信息或帮助。

1 个答案:

答案 0 :(得分:0)

nginx -s reload返回成功(echo $?)告诉我们nginx加载配置是否成功,但现在最新的配置可能不是每个请求的worker,因为可能与旧工作者的某些连接仍然没有完成,在此时间,系统具有配置的双工作流程。

  1. 主工作者模式

    主进程加载新配置并使用它生成新的工作进程,然后在完成已存在的连接后停止旧工作进程

    让我们试试worker_processes 2;

    ✗ ./sbin/nginx
    ✗ ps aux|grep nginx
    larryhe         2572   Ss    2:43PM   0:00.00 nginx: master process ./sbin/nginx
    larryhe         2575   S     2:43PM   0:00.00 nginx: worker process
    larryhe         2573   S     2:43PM   0:00.00 nginx: worker process
    
    ✗ ./sbin/nginx -s reload
    ✗ ps aux|grep nginx
    larryhe         2572     Ss    2:43PM   0:00.01 nginx: master process ./sbin/nginx
    larryhe         2706     S     2:44PM   0:00.00 nginx: worker process
    larryhe         2705     S     2:44PM   0:00.00 nginx: worker process
    

    第二列是pid,我们可以看到reload之前和之后工作进程的pid不同。

  2. 单主模式

    主进程在流程中应用最新配置而不重新启动,如果nginx -s reload返回成功,则已完成。