zoukankan      html  css  js  c++  java
  • nginx -s reload 避坑指南!

    在 nginx 中,如果我修改了一个配置文件,或者新增了一个配置文件。按照群里网友的描述,我需要关闭 nginx,或者重启 nginx,比较麻烦,而且这个过程中会中断服务的提供。那么有没有热配置,或者是不重启就可以生效呢?

    答案当然是有的。那就是使用 nginx -s reload 命令。

    -s 代表的是向主进程发送信号。其中信号有 4 个,stop, quit, reopen, reload。

    reload 就是重新加载的意思。nginx -s reload 命令,合起来的作用就是重新加载配置文件。

    下面一起看一个例子:

    vi nginx.conf
    # 将 tcp_nopush on; 前面的注释去掉,放开注释
    # 然后保存编辑
    nginx -s reload

    这样就可以做到不停服务,平滑的更新 nginx 的配置文件。这样做的好处就是客户体验好,比如我正在数据传输,如果你这时重启 nginx,可能就会造成数据丢失。这个时候,我们就可以温柔的采用 nginx -s reload 命令加载配置文件。

    在比如,我们的负载均衡,灰度发布,热部署。都可以采用修改配置的这种方式进行。

    假设我现在有两台机器,A 和 B。那么我们就可以通过更改配置,proxy_pass http://A; 或 proxy_pass  http://B; 做到热部署。通过更改配置文件,切换请求流量,完成服务发布。

    但是,重点 :是 要所有链接都断开后,配置才会生效。nginx -s reload 是平滑重启,不会强制结束正在工作的连接,需要等所有连接都结束才会重启。

    所以不建议 使用nginx -s reload 命令。

    先 ps -ef | grep nginx ,会出现5个关于nginx的进程,如果5个进程的id分别为 100、101、102、103、104

    杀掉所有nginx进程 kill -9 101 102 103 104

    进入目录 cd /usr/sbin

    重启 nginx -c /etc/nginx/nginx.conf

    至于 nginx -s reload 不建议使用,本人亲试,有时候无效

    启动nginx的时候也可以 cd /usr/sbin,然后直接 nginx ,
    (-c 配置文件,表示根据指定文件启动,如果该配置文件和安装的nginx命令不是一个版本,会报错)
    启动后,nginx -t 可以查看是根据那个配置文件启动的,所以建议linux系统里只保留一个nginx.conf文件,
    以免出现冲突,一般nginx.conf在两个位置,分别是/usr/local/nginx/conf/nginx.conf和/etc/nginx/nginx.conf

  • 相关阅读:
    WPF路由事件三:自定义路由事件
    SQL Server数据类型
    WPF路由事件二:路由事件的三种策略
    WPF路由事件一:逻辑树和可视树
    2015年09月12日
    PN结加正向偏置电压 其空间电荷区为何变窄
    解决win10 关键错误开始菜单和cortana无法工作 的问题(转-真的成功了)
    python的with语句,超级强大
    python安装图文教程---超详细。。。不过是转的,但有改动
    python try/except/finally
  • 原文地址:https://www.cnblogs.com/Chary/p/13361912.html
Copyright © 2011-2022 走看看