Nginx 开发随笔

kill -HUP 命令的作用

kill -HUP <master_pid>nginx -s reload 的效果在 Nginx 中是等价的,两者都会触发 Nginx 热加载(Reload)配置文件,不会中断请求,但它们的实现路径和使用场景略有不同。

  • 工作原理

    • 上述两个命令都会向 Nginx 的 Master 进程发送 HUP 信号
    • 当 Nginx 的 Master 进程在收到 HUP 信号后,会:
      • (1) 重新加载配置文件(比如 nginx.conf 等);
      • (2) 启动新的 Worker 进程;
      • (3) 平滑关闭旧的 Worker 进程(不会中断请求)。
  • 作用对比

命令作用实现机制
nginx -s reload热加载配置(推荐方式)nginx 命令行工具向 Nginx 的 Master 进程发送 HUP 信号
kill -HUP <master_pid>热加载配置直接由用户向 Nginx 的 Master 进程发送 HUP 信号
  • 主要区别
项目nginx -s reloadkill -HUP <master_pid>
可读性✅ 语义清晰⚠️ 较底层
依赖需要 nginx 命令可执行文件和配置路径可用仅需要知道 Nginx 的 Master 进程的 PID
安全性✅ 不容易误杀进程⚠️ 可能误操作(将 HUP 信号发送给错误的 PID)
日志记录✅ 通常会在日志中留下 Reload 记录❌ 不一定记录 Reload 日志
容器运行容器内直接执行(标准方式)K8s 中,Sidecar 方案或者进程空间共享时可用(轻量触发)

总结

  • nginx -s reload 是封装好的安全命令,更推荐使用;
  • kill -HUP <master_pid> 是底层信号方式,更适合在共享进程空间、没有 nginx 命令行工具的场景下使用(如 K8s 中 Sidecar 方案)。