使用 nginx -t 命令可以直接输出 nginx 当前加载的完整生效配置,包括主配置文件、所有包含的子文件以及编译时默认参数。该命令会合并并展开所有 include 指令指向的文件内容,最终打印到标准输出,适合用于排查配置冲突或确认实际生效的规则。

如何查看当前正在运行的 Nginx 实例的配置
直接执行 nginx -T 即可获取结果。如果 Nginx 以非 root 用户运行,可能需要 sudo 权限;如果配置文件路径不是默认位置,需通过 -c 指定配置文件路径。输出内容按加载顺序排列,先显示主配置,再依次展开被 include 的文件,最后显示默认参数块。

sudo nginx -T
若配置文件位于自定义路径,例如 /etc/nginx/custom.conf,则使用:
sudo nginx -T -c /etc/nginx/custom.conf
输出示例中,首先看到 main 上下文中的全局设置,接着是 http 块,然后是各个 server 和 location 的具体配置。所有 include 的文件内容会被原位展开,不会保留 include 语句本身。
如何将输出保存到文件或管道处理
nginx -T 的输出重定向到文件或使用管道工具处理非常常见。由于输出量可能很大,建议结合 grep 过滤特定模块或服务器块。例如,只查看某个 server_name 的配置:
sudo nginx -T | grep -A 20 'server_name example.com'
或者将完整配置保存为备份:
sudo nginx -T > /tmp/nginx_full_config.txt
这种方式比手动复制粘贴更可靠,因为能确保捕获到所有动态生成的配置片段。注意,输出中包含注释行,这些注释来自原始配置文件,有助于理解配置来源。

当多个配置文件存在同名指令时,nginx -T 如何确定最终生效值
在同一个作用域内,后出现的同名指令会覆盖前面的值。例如,如果在 nginx.conf 中设置了 worker_processes 4;,而在被 include 的 conf.d/default.conf 中也设置了 worker_processes 8;,且后者在主配置之后加载,则最终生效值为 8。nginx -T 会按加载顺序展示所有出现的位置,开发者需根据输出中的顺序判断最终值。对于列表型指令如 add_header,所有声明都会累积生效,而非覆盖。











