【问题标题】:Nginx: when was configuration last reloaded?Nginx:上次重新加载配置是什么时候?
【发布时间】:2018-10-30 15:06:33
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我在应用重新加载之前使用nginx -t 对其进行测试(我不知道是否有办法获得最后一次配置重新加载时间)
  • @hcheung 不是:在reload 操作期间不会重新启动进程。

标签: typescript nginx ansible


【解决方案1】:

那个nginx -s reloadreturn success(echo $?)告诉我们nginx加载配置成功了,但是现在最新的配置可能不是每一个请求的worker,因为可能和老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前后worker进程的pid不同。

  2. 单主模式

    主进程在不重启的情况下应用进程内的最新配置,如果nginx -s reload返回成功则完成。

【讨论】:

    猜你喜欢
    • 2012-11-11
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多