Plainnotes

nginx -t 通过,配置却没生效

2025-09-17 · 3 分钟部署

改完配置,nginx -t 显示 successful,systemctl reload nginx 也没报错,但行为一点没变。

三种可能。

一,reload 失败被吞了。systemctl reload 只看进程有没有收到信号,nginx 自己解析失败会保留旧配置并写日志。看 journalctl -u nginx -n 30 或 error.log,会有 emerg 级别的报错。

二,改的不是正在使用的文件。nginx -t 默认读 /etc/nginx/nginx.conf,但服务可能用 -c 指定了别的路径。ps -ef | grep nginx 看 master 进程的参数。

三,改的是 conf.d 里的文件,但主配置没有 include 它,或者 include 的顺序导致被后面的 server 覆盖。

确认生效的办法很直接:nginx -T 打印合并后的完整配置,搜你的改动在不在里面。