Nginx配置检查测试
Nginx配置检查测试
引言
改完Nginx配置直接reload最容易踩坑:语法错、证书路径错、端口被占会导致Nginx起不来甚至站点全挂。规范流程是先检查语法,通过后再平滑重载,出问题能快速回退。
语法检查
nginx -t
检查默认配置文件语法,输出syntax ok和test is successful才说明配置无误。
指定配置文件检查
nginx -t -c /etc/nginx/nginx.conf
自定义路径时用-c指定,避免检查错文件。
平滑重载
nginx -s reload
不中断现有连接重新加载配置,改动生效不宕机。
查看编译参数和版本
nginx -V
大写V看版本和编译模块,确认是否包含ssl、gzip、stream等模块。
打印生效配置
nginx -T
大写T会把所有include进来的配置打印出来,排查重复server或覆盖时用。
出错常见原因
- 括号不配对、分号漏写;
- 证书key路径不存在或权限600不对;
- listen端口已被其他进程占用;
- upstream后端地址写错;
- include路径下的文件本身语法错。
注意事项
- 永远先-t再reload,禁止跳过检查;
- 改配置前备份原文件,出错可立刻回退;
- -T输出很长,重定向到文件再查;
- reload失败先看error.log定位行号;
- 生产环境改完curl本机验证再放行;
- 多台机器逐台灰度,不要一次全改。
总结
nginx -t检查语法,-c指定文件,-s reload平滑生效,-V看编译模块,-T打印完整配置。铁律是先检查通过再重载,改前备份、出错看error.log、本机curl验证后再上线,生产逐台灰度,避免一次改全量导致整站不可用。
Nginx重启、重载、停止命令,nginx -s reload
前言
改了 Nginx 配置,怎么让它生效?很多新手直接重启服务器,其实没必要。Nginx 有专门的重载命令,不中断服务。
常用命令汇总
| 操作 | 命令 |
|---|---|
| 重载配置(不中断) | nginx -s reload |
| 停止 Nginx | nginx -s stop |
| 优雅停止 | nginx -s quit |
| 检查配置 | nginx -t |
| 重启 Nginx | systemctl restart nginx |
| 查看状态 | systemctl status nginx |
重载配置(最常用)
改完配置,用这个:
nginx -s reload
好处: 不中断现有连接,新连接用新配置。生产环境用这个,不要直接重启。
检查配置
改完配置先检查一下语法:
nginx -t
输出 syntax is ok 才能重载。不然重载失败 Nginx 就挂了。
停止 Nginx
快速停止
nginx -s stop
直接杀进程,不管正在处理的请求。
优雅停止
nginx -s quit
等正在处理的请求完成后再停止。生产环境用这个。
重启 Nginx
用 systemctl 管理的:
systemctl restart nginx
编译安装的:
nginx -s stop
nginx
查看 Nginx 状态
systemctl status nginx
或者看进程:
ps aux | grep nginx
开机自启
systemctl enable nginx
常见坑
坑1:改了配置不生效
执行了 nginx -s reload,但配置还是老的。
原因1: 没检查配置语法,reload 失败了。
解决: 先跑 nginx -t,确认配置没问题再 reload。
原因2: 改的不是实际加载的配置文件。
解决: 用 nginx -t 确认一下加载的是哪个配置文件。
坑2:reload 后 Nginx 挂了
改了配置,reload 后网站打不开。
原因: 配置写错了,新进程起不来,老进程也退了。
解决: 赶紧回滚配置,然后 systemctl restart nginx。
预防: 改配置前先备份,改完先 nginx -t。
坑3:找不到 nginx 命令
执行 nginx: command not found。
原因: 编译安装的 Nginx 不在 PATH 里。
解决: 用完整路径:
/usr/local/nginx/sbin/nginx -s reload
坑4:reload 提示 no PID
执行 nginx -s reload 提示 no PID found。
原因: Nginx 没启动。
解决: 先启动 Nginx。
总结
日常操作流程:
- 改配置
nginx -t检查语法nginx -s reload重载- 测试网站是否正常
记住: 生产环境改配置,永远用 reload,不要用 restart,不中断服务。
遇到问题加QQ23979811 协助处理