nginx -T 命令将 Nginx 当前加载的所有配置完整展开并输出到标准输出,生成扁平化生效配置快照,用于调试配置是否如预期生效,需先通过 nginx -t 验证,支持自定义配置路径和非 root 用户读取,不启动服务,纯静态分析。

nginx -T 是一个非常实用的调试命令,它会将 Nginx 当前加载的所有配置(包括 include 引入的文件、预设变量、默认指令等)**完整展开并输出到标准输出**,相当于生成一份“最终生效的、扁平化”的配置快照。这对排查线上配置是否如预期生效特别有用。
确保 Nginx 已正确加载配置
执行 nginx -T 前,Nginx 必须能成功读取并解析全部配置(即 nginx -t 需通过)。否则会报错退出,不会输出配置内容。
- 先运行
nginx -t确认语法无误、路径可访问 - 如果使用非默认配置路径(如
-c /etc/nginx/nginx.conf),nginx -T也需显式指定:nginx -T -c /etc/nginx/nginx.conf - 若以非 root 用户运行(如仅查看不加载),需确保有权限读取所有被 include 的文件(如
/etc/nginx/conf.d/*.conf)
直接输出完整展开配置
在终端中执行:
nginx -T
你会看到从主配置开始,逐行展开所有 include 文件内容,同时自动补全未显式声明但有默认值的指令(例如 keepalive_timeout 75、types_hash_max_size 2048 等),还会显示模块内置的默认 MIME 类型映射等。
- 输出包含注释(# 开头),保留原始注释,也添加部分自动生成的说明
- 所有相对路径(如
include sites-enabled/*;)都会被自动解析为绝对路径并展开对应文件内容 - 不会实际启动或重载 Nginx,纯静态分析
配合管道或重定向方便分析
因输出通常很长,建议结合 less、grep 或保存为文件:
- 翻页查看:
nginx -T | less - 搜索某 server 块:
nginx -T | grep -A 5 -B 5 "server_name example.com" - 保存快照用于比对:
nginx -T > /tmp/nginx-full-config-$(date +%s).txt - 过滤掉注释和空行(精简查看结构):
nginx -T | grep -v "^#" | grep -v "^$"
注意与 nginx -t 和 nginx -V 的区别
nginx -T 不是验证配置(那是 -t),也不是显示版本/编译参数(那是 -V)。它的核心价值在于「可视化真实生效配置」——尤其当你用了很多 include、环境变量(需搭配 envsubst 预处理)、或依赖模块默认行为时,-T 能帮你一眼看清 Nginx 实际“看到”的是什么。


















