改完 nginx 为什么一定要先 nginx -t

2026-03-05

reload 成功不等于配置正确。

reload 的机制

nginx reload 时,主进程读新配置;如果解析失败,它会保留旧配置继续服务,只在日志里记一条错误。结果是:你以为改动生效了,实际上跑的还是旧配置。

所以 nginx -t 必须单独跑,它是唯一能在改动生效前就发现问题的手段。

最危险的一种中间态

配置里引用了一个还不存在的证书文件时,nginx -t 会失败,reload 不生效。此时磁盘上的配置文件是坏的,而运行中的配置是好的。如果这时候机器重启,nginx 就起不来了。

避免方式很简单:改动前先确认引用到的文件都存在,改完立刻 nginx -t 加 reload,两步都通过才算完成。

验证要看到响应

配置改动的最终判据不是 nginx -t 通过,而是实际请求返回符合预期。放行路径应当返回 200,应当拦截的路径应当返回 404,这两条都要逐条实测。