nginx -t 命令触发独立校验流程,由精简版 Master 初始化并调用 ngx_conf_parse() 解析配置,检查指令上下文、参数合法性等,但不 fork Worker、不监听端口;它无法检测 SSL 证书有效性、端口占用、正则回溯及未编译模块等问题。
Master 进程本身不直接执行配置语法检测,真正承担这项任务的是 nginx -t 命令触发的一次独立校验流程。这个流程会临时启动一个精简版的 Master+Worker 环境,仅用于解析和验证,不监听端口、不加载运行时逻辑。
执行 nginx -t 时,Nginx 会:
include 的子配置(如站点 conf、SSL 片段)ngx_conf_parse() 逐行处理指令root 不能写在 upstream 块里)keepalive_timeout abc; 会报错)此时 Master 进程被初始化,但处于“只读模式”:
ngx_open_listening_sockets()
ngx_cycle_t 配置结构体nginx -t 检不出它只做静态检查,以下运行时问题需其他手段确认:
ssl_certificate 指向无效路径)bind() failed 错误发生在 reload 或启动阶段)lua_code_cache off; 在无 Lua 模块版本中会被静默忽略)为覆盖更多风险点,建议组合操作:
nginx -t,确保语法与结构合规curl -I 或 openssl s_client 实测响应行为nginx -T 查看展开后的完整配置,人工复核 include 逻辑与最终生效值nginx -t 集成进 CI/CD 流水线,在推送配置前自动拦截语法错误