安全启动与停止Nginx需先验证配置(nginx -t),推荐用systemd管理(start/stop/status/reload),手动时区分QUIT(从容停止)与TERM(快速停止),避免kill -9;重载配置优先于重启,确保服务平滑无中断。
安全启动与停止 Nginx,核心在于避免配置错误导致服务失败、防止连接意外中断、并确保进程干净退出。关键不是“能不能停”,而是“怎么停得稳、启得准”。
直接启动可能因语法错误导致失败,甚至掩盖真实问题。应先测试再启动:
/usr/local/nginx/conf/nginx.conf 或 /etc/nginx/nginx.conf)nginx -t -c /path/to/nginx.conf
CentOS 7+、Ubuntu 16.04+ 等系统默认使用 systemd,它能自动处理依赖、记录日志、维持状态,比手动发信号更可靠:
sudo systemctl start nginx
sudo systemctl stop nginx(会等待 worker 处理完当前请求后退出)sudo systemctl status nginx —— 注意是否显示 active (running),失败时会明确提示错误位置sudo systemctl enable nginx
若未用 systemd(如源码编译未注册为服务),需向 master 进程发送正确信号。关键是理解信号含义,而非只记命令:
kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid) —— master 通知 worker 处理完现有请求再退出,不丢连接kill -TERM $(cat /usr/local/nginx/logs/nginx.pid) —— 立即终止 master 和所有 worker,可能中断活跃连接修改配置后,多数情况只需重载(reload),而非重启(restart):
sudo systemctl reload nginx 或 nginx -s reload —— 平滑生效,旧 worker 继续服务直到完成请求,新 worker 按新配置启动systemctl restart nginx —— 它会彻底停服再启动,有短暂不可用窗口nginx -t,防止 reload 失败导致服务中断