暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Nginx指令应用

原创 我为啥没洁癖 2024-03-25
153

nginx指令管理包括命令行和信号,nginx是多进程架构,进程间通过信号进行交互,我们通过命令行和信号指令可以达到相同的效果。

命令行

根据上面安装的目录,nginx安装在/usr/local/nginx目录,所有相关的文件都会在上面,nginx二进制命令文件在./sbin

#查看版本
./nginx -v
#查看编译信息
./nginx -V
#测试配置文件是否正确
./nginx -t
./nginx -T
#指定配置文件启动
./nginx -c ./conf/nginx.conf
#优雅停止nginx服务,对应SIGQUIT信号
./nginx -s quit
#立刻停止nginx服务,对应SIGTERM信号
./nginx -s stop
#热更新配置conf,SIGHUB信号
./nginx -s reload
#重新开始记录日志,对应SIGUSR1信号
./nginx -s reopen

信号指令

  • 慎用 nginx -s stop,尽可能使用 nginx -s quit
  • 热更新之后,如果确定业务没问题,尽可能让旧的 master 进程退出
  • 关键性的信号操作完成后,等待一段时间,避免时间窗口的影响
  • 不要直接向 worker 进程发送信号

Master进程,监控Woker进程,Woker进程退出时会向Master进程发送CHLD信号,Master进程可以接受的指令有:

  • TERM、INT
    相当于执行nginx -s stop,立即停止进程,丢弃正在处理的请求。
  • QUIT
    相当于执行nginx -s quit,优雅停止进程,处理完正在处理的请求后停止进程。
  • HUP
    相当于执行nginx -s reload,重载配置文件。
  • USR1
    相当于执行nginx -s reopen,重新打开日志,做日志文件的切割。
  • USR2
    在老的master进程上启动新的的master进程,用于二进制nginx文件热更新
kill -SIGUSR2 $PID
  • WINCH
    让master进程不再接受请求并关闭其管理的woker进程,配合USR2信号做二进制nginx文件热更新

热更新nginx版本

如果要热更新nginx二进制文件,首先需要重新编译新的二进制nginx文件,再给nginx目录中的nginx二进制文件进行替换,接着替换nginx的master进程,让master进行平滑生成新的worker进程即可。

#在老的master进程的基础上启动新的的master进程
kill -USR2 32718

#让旧的master进程不再接受新的请求,此时旧的worker会退出,但是老的master不会退出,以允许版本回退。但是旧的master没有退出前新的master是无法再次热更新的
kill -WINCH 32718
#如果要回退直接nginx -s quit,新的master和worker会退出旧的master会调度起worker
nginx -s stop
#如果升级完毕想关闭旧的master退出旧的master即可
kill -SIGQUIT 32718

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论