可以做到。nginx 通过 sighup 信号实现配置热重载,主进程不退出,新旧 worker 并行服务,已建立连接不中断,新请求按新配置处理,需向 master 进程发送 kill -hup 信号并验证进程、日志与连接状态。

可以做到。Nginx 原生支持通过 SIGHUP(信号编号 1)实现配置重载,整个过程不中断已有 TCP 连接,新请求会由新 worker 进程处理,老连接由旧 worker 继续服务直至自然结束。
确认 Nginx 正在运行并获取主进程 PID
主进程(master process)是接收并分发 SIGHUP 的关键,它不会退出,只负责启动新 worker、优雅关闭旧 worker。
- 查看主进程 PID:通常在 /var/run/nginx.pid 文件中,直接读取:
cat /var/run/nginx.pid - 或用 ps 精确查找 master 进程:
ps aux | grep "nginx: master" - 确保你有权限向该 PID 发送信号(一般需 root 或 nginx 启动用户)
发送 SIGHUP 信号触发平滑重载
向 master 进程发送 -HUP(或 -1),它会立即读取 nginx.conf 并启动新 worker,同时通知旧 worker 处理完当前连接后退出。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 标准命令(推荐使用信号名):
kill -HUP $(cat /var/run/nginx.pid) - 等效写法(使用编号):
kill -1 $(cat /var/run/nginx.pid) - 若 PID 文件路径不同(如编译安装),请替换为实际路径,例如
/usr/local/nginx/logs/nginx.pid
验证重载是否成功且连接未中断
操作后可快速检查三方面:
-
进程状态:执行
ps aux | grep nginx,应看到多个新 worker 进程(PID 变化),且 master 进程 PID 不变 -
错误日志:查看
/var/log/nginx/error.log,成功时会有类似reloading configuration的记录,无 fatal 错误 -
连接连通性:用
ss -tn state established | grep :80或持续 curl 测试,已建立的 TCP 连接仍保持活跃,新请求按新配置路由
注意事项与常见问题
该机制依赖 Nginx 自身实现,不是 kill 命令的通用行为,仅对正确设计的守护进程有效。
- 配置语法必须正确,否则重载失败,master 会回滚并报错,worker 不受影响
- 不要对 worker 进程 PID 发送 SIGHUP —— 只作用于 master;误发可能导致单个 worker 异常退出
- 若使用 systemd 管理,更推荐用
systemctl reload nginx,它底层就是调用 kill -HUP,但自带校验和依赖管理 - 旧 worker 进程会在所有连接关闭后自动退出,观察
ps输出中旧 PID 消失即可确认完成










