nginx 的 include 指令用于按功能分层拆分配置,推荐在 /etc/nginx/ 下设 conf.d/、sites-enabled/、snippets/、upstreams/ 四个目录;include 必须置于合法作用域内,优先使用绝对路径,并通过数字前缀控制加载顺序,每次修改后需执行 nginx -t 验证。

Nginx 配置用 include 指令组织,核心是按功能拆分、分层加载、路径明确、顺序可控。它不是简单“粘贴文件”,而是让主配置保持简洁,把可复用、易变更的部分抽离出去,由 Nginx 在启动或重载时静态合并。
按功能分层,目录结构要清晰
推荐在 /etc/nginx/ 下建立这几个标准子目录:
-
conf.d/:放全局级通用配置,比如
gzip.conf、security.conf、logging.conf -
sites-enabled/:只放当前启用的虚拟主机(每个
.conf是一个完整的server { }块),通常用软链接指向sites-available/中的文件 -
snippets/:存小片段,如
ssl-params.conf、proxy-params.conf、cors-headers.conf,供多个server或location复用 -
upstreams/:集中定义
upstream { }块,方便多处引用,避免重复
include 位置要匹配上下文作用域include 不是万能的,必须写在目标指令合法的位置:
- 在
http { }块里可以引入upstream、map、log_format、types等全局指令 - 在
server { }块里只能引入location、rewrite、响应头设置等 server 级指令 - 不能在
location { }里include一个含upstream的文件,会直接报错:“directive is not allowed here”
路径写法必须稳,优先用绝对路径
相对路径以 nginx.conf 所在目录为起点,容易误判。稳妥做法始终写全路径:
- ✅
include /etc/nginx/conf.d/*.conf; - ✅
include /etc/nginx/snippets/ssl-params.conf; - ✅
include "/etc/nginx/conf.d/my app.conf";(含空格必须加引号) - ❌
include conf.d/*.conf;(看似简洁,但依赖当前工作目录,不推荐) - ❌
include ../shared/headers.conf;(路径跳转易出错,权限和可读性也难保障)
用文件名前缀控制加载顺序
通配符按字母序加载,利用数字前缀确保依赖关系正确:
-
00-system.conf:基础设置(MIME 类型、日志格式、超时) -
10-compression.conf:Gzip 配置(依赖 MIME 已加载) -
20-ssl.conf:SSL 参数(供后续 server 引用) -
90-rate-limit.conf:限流规则(通常放最后,避免被覆盖)
每次改完任一被 include 的文件,都必须执行 nginx -t 验证。错误提示会精准定位到具体文件和行号,这是排查问题最直接的方式。











