Nginx的include指令是文本级包含,启动时原样插入文件内容;必须用绝对路径,支持通配符且按ASCII顺序加载;仅限合法上下文使用,推荐分层目录管理配置。

Nginx 通过 include 指令引入外部子配置文件,本质是“文本级包含”——在 Nginx 启动或重载时,把匹配文件的内容原样插入到当前配置位置,不运行时解析、无性能开销,但要求路径准确、上下文合规、顺序可控。
必须用绝对路径,避免相对路径歧义
相对路径以 Nginx 编译时的 --prefix 目录为基准(默认如 /usr/local/nginx),极易误判。推荐统一写绝对路径:
include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/example.com.conf;- Windows 下可用正斜杠:
include C:/nginx/conf/snippets/proxy-params.conf;
支持通配符,但按字母序加载
使用 * 可批量引入,Nginx 按文件名 ASCII 码顺序读取(不是创建时间或修改时间):
-
00-logging.conf→10-upstream.conf→99-default.conf - 若
server块依赖已定义的upstream,就必须让 upstream 文件名排在前面 - 避免用
a.conf、b.conf这类命名,优先采用数字前缀确保可预期顺序
只能在合法上下文中使用
include 不是全局指令,必须出现在允许的配置块内,且被引入文件的内容必须符合该上下文语法:
- 在
http { }块中可 include 全局片段(如mime.types、conf.d/*.conf) - 在
server { }块中可 include 复用的 location 或安全策略(如snippets/cors-enable.conf) - 不能在
http块里 include 一个含server { }的文件,会报错
推荐分层目录结构,便于协作维护
按职责拆分目录,避免所有配置堆在一个文件夹:
-
/etc/nginx/conf.d/:全局基础项(SSL 参数、日志格式、超时设置) -
/etc/nginx/sites-enabled/:启用的站点配置(每个文件一个完整server块) -
/etc/nginx/snippets/:可复用小模块(反向代理头、IP 限速、Bot 屏蔽规则)
对应主配置中典型写法:
http {
include /etc/nginx/mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/snippets/*.conf;
include /etc/nginx/sites-enabled/*.conf;
}


















