跳到主内容
UniKit

Nginx配置校验

在线检测 Nginx 配置语法错误:自研词法扫描检查 server/location/upstream/http 块嵌套、指令是否以 ; 结尾、{ } 与引号是否配对,未知指令给出警告,每条问题带行号与级别。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

校验结果

在上方输入配置,这里会实时给出问题列表。

这个工具能做什么

  • 改完 nginx.conf 之后先在浏览器里过一遍:漏分号、多一个 `}`、块没闭合这类低级错误不必等 `nginx -t` 才发现。
  • 接手别人的配置时快速摸清结构:工具会统计指令条数、块数量与最大嵌套深度。
  • 排查「明明配了却不生效」:把 `location` 写在 `http` 里、把 `server` 写到顶层这类位置错误会直接标出来。
  • 对照第三方模块的指令:白名单之外的指令只给警告,能一眼看出哪些是自定义模块带来的。

示例

输入

events {
    worker_connections 1024
}

输出

第 2 行 错误 指令 worker_connections 缺少结尾的分号 ;

指令必须以 ; 结尾;块用 { } 包裹,配对错误会单独报一行。

常见问题

这个工具会执行我的配置吗?

不会。它只做词法扫描与结构检查:不启动 nginx、不加载模块、不连接任何服务器,配置内容也不会被上传。想知道配置能否被 nginx 真正接受,仍需在服务器上执行 `nginx -t`。

为什么 location 写在 http 里会报错?

nginx 只允许 location 出现在 server(或另一个 location)里,http 里直接写 location 属于结构错误,nginx 启动时会直接失败。同理 server 必须在 http / stream / mail 里,upstream 必须在 http / stream 里。

「未知指令」是错误吗?

只是警告。白名单覆盖了 nginx 核心模块、events、http、stream、mail 的常用指令,第三方模块(如 lua、headers-more)带来的指令不在其中,所以不会判成错误,也不影响整体结论。

为什么会提示「似乎缺少分号」?

nginx 允许一条指令跨行书写,所以工具只在很保守的情况下提示:当前指令已经写了参数,而下一行以另一个已知指令名开头。看到这条提示时先确认是不是真的漏了分号,再决定要不要改。

能校验完整的 nginx.conf 吗?

可以,直接整份粘贴即可。也可以只粘贴一个 server 或 location 片段,这时顶层块会被视为合法的顶层结构,不会因为缺少外层 http 而报错。

关键词:nginxnginx confignginx validatornginx syntaxnginx 配置nginx 校验nginx 语法检查locationserver 块upstreammissing semicolon配置文件检查

同类工具