[{"data":1,"prerenderedAt":32},["ShallowReactive",2],{"article-nginx-discipline":3},{"id":4,"title":5,"slug":6,"summary":7,"coverUrl":8,"contentFormat":9,"contentHtml":10,"viewCount":11,"publishTime":12,"updateTime":13,"seoTitle":5,"seoDescription":7,"tags":14,"prev":23,"next":27,"highlighted":31},"3","改 nginx 只新增、不改动：一条自救用的运维纪律","nginx-discipline","这台服务器上跑着别人的项目，改配置必须假设\"改错就是事故\"。 三条纪律 只新增 location，绝不修改已有 location 改前必须备份，改后必须 nginx -t 用 nginx -s reload 平滑重载，不用 restart …","","markdown","\u003Cp>这台服务器上跑着别人的项目，改配置必须假设\"改错就是事故\"。\u003C\u002Fp>\n\u003Ch2>三条纪律\u003C\u002Fh2>\n\u003Col>\n \u003Cli>\u003Cstrong>只新增 location，绝不修改已有 location\u003C\u002Fstrong>\u003C\u002Fli>\n \u003Cli>改前必须备份，改后必须 \u003Ccode>nginx -t\u003C\u002Fcode>\u003C\u002Fli>\n \u003Cli>用 \u003Ccode>nginx -s reload\u003C\u002Fcode> 平滑重载，不用 restart\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2>落到脚本里长这样\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-bash\">TS=$(date +%Y%m%d-%H%M%S)\ncp -a \u002Fetc\u002Fnginx\u002Fnginx.conf \"\u002Fetc\u002Fnginx\u002Fnginx.conf.bak-$TS\"\n\nif nginx -t 2&gt;&amp;1; then\n    nginx -s reload\nelse\n    cp -a \"\u002Fetc\u002Fnginx\u002Fnginx.conf.bak-$TS\" \u002Fetc\u002Fnginx\u002Fnginx.conf   # 自动回滚\n    exit 1\nfi\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>顺手发现的一件事\u003C\u002Fh2>\n\u003Cp>\u003Ccode>\u002Fetc\u002Fnginx\u002Fconf.d\u002F\u003C\u002Fcode> 目录\u003Cstrong>根本没有被 include\u003C\u002Fstrong>。里面那两个 \u003Ccode>ui.conf\u003C\u002Fcode> 是另一个 nginx 实例 （另一个 systemd 服务）在用。如果当时想当然地把配置丢进 conf.d，改完会毫无效果， 然后花半天找\"为什么配置不生效\"。\u003C\u002Fp>","110","2026-08-31 20:56:11","2026-10-18 23:25:29",[15,19],{"id":16,"name":17,"slug":18},"1","技术","tech",{"id":20,"name":21,"slug":22},"5","部署","deploy",{"id":24,"title":25,"slug":26},"2","为什么我把博客改成了 SSG，以及百度收录从 3% 到全量","ssg-blog-setup",{"id":28,"title":29,"slug":30},"4","2026 上半年：把想法做成能用的东西","2026-h1-review","\u003Cp>这台服务器上跑着别人的项目，改配置必须假设\"改错就是事故\"。\u003C\u002Fp>\n\u003Ch2>三条纪律\u003C\u002Fh2>\n\u003Col>\n \u003Cli>\u003Cstrong>只新增 location，绝不修改已有 location\u003C\u002Fstrong>\u003C\u002Fli>\n \u003Cli>改前必须备份，改后必须 \u003Ccode>nginx -t\u003C\u002Fcode>\u003C\u002Fli>\n \u003Cli>用 \u003Ccode>nginx -s reload\u003C\u002Fcode> 平滑重载，不用 restart\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2>落到脚本里长这样\u003C\u002Fh2>\n\u003Cpre class=\"shiki rose-pine-dawn\" style=\"background-color:#faf4ed;color:#575279\" tabindex=\"0\" data-lang=\"bash\">\u003Ccode>\u003Cspan class=\"line\" data-line=\"1\">\u003Cspan style=\"color:#575279;font-style:italic\">TS\u003C\u002Fspan>\u003Cspan style=\"color:#286983\">=\u003C\u002Fspan>\u003Cspan style=\"color:#797593\">$(\u003C\u002Fspan>\u003Cspan style=\"color:#D7827E\">date\u003C\u002Fspan>\u003Cspan style=\"color:#EA9D34\"> +%Y%m%d-%H%M%S\u003C\u002Fspan>\u003Cspan style=\"color:#797593\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"2\">\u003Cspan style=\"color:#D7827E\">cp\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> -a\u003C\u002Fspan>\u003Cspan style=\"color:#EA9D34\"> \u002Fetc\u002Fnginx\u002Fnginx.conf\u003C\u002Fspan>\u003Cspan style=\"color:#EA9D34\"> \"\u002Fetc\u002Fnginx\u002Fnginx.conf.bak-\u003C\u002Fspan>\u003Cspan style=\"color:#575279;font-style:italic\">$TS\u003C\u002Fspan>\u003Cspan style=\"color:#EA9D34\">\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"3\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"4\">\u003Cspan style=\"color:#286983\">if\u003C\u002Fspan>\u003Cspan style=\"color:#D7827E\"> nginx\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> -t\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> 2>&#x26;1\u003C\u002Fspan>\u003Cspan style=\"color:#797593\">;\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> then\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"5\">\u003Cspan style=\"color:#D7827E\">    nginx\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> -s\u003C\u002Fspan>\u003Cspan style=\"color:#EA9D34\"> reload\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"6\">\u003Cspan style=\"color:#286983\">else\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"7\">\u003Cspan style=\"color:#D7827E\">    cp\u003C\u002Fspan>\u003Cspan style=\"color:#286983\"> -a\u003C\u002Fspan>\u003Cspan style=\"color:#EA9D34\"> \"\u002Fetc\u002Fnginx\u002Fnginx.conf.bak-\u003C\u002Fspan>\u003Cspan style=\"color:#575279;font-style:italic\">$TS\u003C\u002Fspan>\u003Cspan style=\"color:#EA9D34\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#EA9D34\"> \u002Fetc\u002Fnginx\u002Fnginx.conf\u003C\u002Fspan>\u003Cspan style=\"color:#797593;font-style:italic\">   #\u003C\u002Fspan>\u003Cspan style=\"color:#9893A5;font-style:italic\"> 自动回滚\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"8\">\u003Cspan style=\"color:#B4637A;font-style:italic\">    exit\u003C\u002Fspan>\u003Cspan style=\"color:#D7827E\"> 1\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" data-line=\"9\">\u003Cspan style=\"color:#286983\">fi\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>顺手发现的一件事\u003C\u002Fh2>\n\u003Cp>\u003Ccode>\u002Fetc\u002Fnginx\u002Fconf.d\u002F\u003C\u002Fcode> 目录\u003Cstrong>根本没有被 include\u003C\u002Fstrong>。里面那两个 \u003Ccode>ui.conf\u003C\u002Fcode> 是另一个 nginx 实例 （另一个 systemd 服务）在用。如果当时想当然地把配置丢进 conf.d，改完会毫无效果， 然后花半天找\"为什么配置不生效\"。\u003C\u002Fp>",1792348093714]