这台服务器上跑着别人的项目,改配置必须假设"改错就是事故"。
三条纪律
- 只新增 location,绝不修改已有 location
- 改前必须备份,改后必须
nginx -t - 用
nginx -s reload平滑重载,不用 restart
落到脚本里长这样
TS=$(date +%Y%m%d-%H%M%S)
cp -a /etc/nginx/nginx.conf "/etc/nginx/nginx.conf.bak-$TS"
if nginx -t 2>&1; then
nginx -s reload
else
cp -a "/etc/nginx/nginx.conf.bak-$TS" /etc/nginx/nginx.conf # 自动回滚
exit 1
fi
顺手发现的一件事
/etc/nginx/conf.d/ 目录根本没有被 include。里面那两个 ui.conf 是另一个 nginx 实例 (另一个 systemd 服务)在用。如果当时想当然地把配置丢进 conf.d,改完会毫无效果, 然后花半天找"为什么配置不生效"。
