外观
3.3 配置检查与重启验证
约 783 字
Nginx反向代理
本页对应「三、操作步骤」的 3.3,完成配置检查与重启验证。返回上级:Nginx 反向代理配置指南。
前置条件
- 3.1 与 3.2 的配置已写入站点文件,且文件位于 sites-enabled 目录或被 include 引用。
- 当前 nginx 服务处于运行状态,有可用的回滚备份 /root/nginx.bak。
- 本机可访问 example.com 的 80 与 443,DNS 已指向本机。
- 已记录重载前的时间点,便于对照错误日志。
- 已准备命令行与浏览器两个验证入口,避免只依赖单一工具得出错误结论。
操作步骤
- 做语法检查并确认包含关系,避免改了文件却没被加载。
-T会输出合并后的完整配置。
sudo nginx -t
sudo nginx -T | grep -n 'server_name'- 记录重载前的 master PID,用于判断是 reload 还是 restart。PID 变化意味着进程被重建。
systemctl show nginx -p MainPID --value- 执行平滑重载并再次读取 PID。两次结果相同才说明是平滑重载。
sudo systemctl reload nginx
systemctl show nginx -p MainPID --value
systemctl is-active nginx- 分层验证 80 与 443 的行为。先看跳转,再看内容,最后看耗时。
curl -sSI http://example.com | head -n 3
curl -sSI https://example.com | head -n 6
curl -sS -o /dev/null -w 'code=%{http_code} time=%{time_total}\n' https://example.com/- 检查错误日志与监听状态,确认没有新增上游错误。日志按时间倒序取最后 30 行即可。
sudo tail -n 30 /var/log/nginx/example.error.log
sudo ss -lntp | grep -E ':(80|443)\s'结果确认
nginx -t输出 successful,nginx -T中能看到预期 server_name,且没有重复定义。- 重载前后 MainPID 一致,说明执行的是平滑重载而非重启。
- http 请求返回 301 且 Location 指向 https;https 请求返回 200。
- 错误日志无新增
connect() failed、upstream timed out;ss显示 80、443 均由 nginx 监听。 - 三次 curl 的
time_total处于同一量级,没有偶发的秒级尖刺。 systemctl status nginx --no-pager中 Active 行显示 active (running),且启动时间未发生变化。
注意事项
- 若 MainPID 发生变化,说明实际执行了 restart,需确认当时无长连接任务受影响,并排查为何走了 restart 路径。
- 重载后仍是旧内容时,先排查浏览器与 CDN 缓存,不要反复改配置重载,反复重载会掩盖真正问题。
- 保留备份的时间点与对应变更内容,回滚按时间点还原而非凭记忆编辑。
- 验证完成后把
nginx -T的完整输出存档一份,便于下次对比差异,也能证明当时的生效配置。 nginx -t通过不代表端口已放通,外部不可访问时先查安全组与 ufw,再查 Nginx。- 变更窗口内避免同时修改站点配置与全局 nginx.conf,两者同时改动会让故障定位多出一层变量。
- 验证结束后若发现异常,先按备份回滚再排查,不要在不稳定的配置上继续叠加修改。