nginx 用 include 拆分配置需按功能分目录(conf.d/、upstreams/、snippets/、modules/),include 必须在合法上下文,路径以主配置目录为基准,通配符按字母序加载,须用 nginx -t 验证合并结果且禁止循环引用。

用 include 拆分 Nginx 配置,核心是让主配置文件变薄、子配置职责清晰、改动安全可控。不是为了拆而拆,而是让每个文件只管一件事。
按功能类型分目录存放
把不同作用的配置放到不同目录,避免混在一起:
-
conf.d/:放完整的
server块,比如blog.conf、api.conf,每个文件对应一个站点或服务 -
upstreams/:集中定义
upstream,供多个 server 复用,如backend-app.conf -
snippets/:放可插拔的片段,像
ssl-params.conf(通用 TLS 设置)、security-headers.conf(CSP、X-Frame 等) -
modules/:放需在
http块顶部声明的全局指令,如map、limit_req_zone
include 必须写在合法上下文中
不能随便扔一个 include 就完事,它必须出现在能容纳目标内容的位置:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 在
http { }块里,可以引入upstream、server、log_format、map等 - 在
server { }块里,只能引入location、rewrite、proxy_set_header这类 server 级指令 - 在
location { }块里,适合引入访问控制或缓存策略,比如deny-bots.conf - 不能在
events或全局块里引入http或server—— 会直接报错
路径和加载顺序要明确
include 的路径不是“相对于当前文件”,而是以 Nginx 主配置目录(通常是 /etc/nginx/)为基准:
-
include conf.d/*.conf;→ 实际读取/etc/nginx/conf.d/*.conf -
include ../shared/headers.conf;→ 可向上跳一级,只要权限允许且路径存在 - 含空格的文件名必须加引号:
include "my site.conf"; - 通配符按字母序加载,建议用数字前缀控制优先级,例如
00-ssl.conf先于99-api.conf
验证与维护要点
拆完不等于完事,得确保能用、好查、不出错:
- 被 include 的文件**不能单独运行**
nginx -t,必须从主配置入口验证 - 用
nginx -T可查看最终合并后的完整配置,方便排查覆盖或遗漏 - 禁止循环引用,比如 A.conf include B.conf,B.conf 又 include A.conf
- 所有子文件都必须语法正确,一处错误会导致整个 Nginx 启动失败










