conf.d 是 Nginx 的模块化配置子目录,通过 include 指令加载 *.conf 文件,实现主配置解耦、按需启停和多人协作;需规范命名、避免 server_name 冲突、逻辑分组,并注意加载顺序与语法验证。

conf.d 是 Nginx 配置管理的关键枢纽,不是必须存在,但几乎所有标准安装(如 yum/apt)都默认启用它——它的作用就是把站点或功能配置从主文件中“请出去”,让 nginx.conf 保持干净、稳定、可追溯。
conf.d 的位置和加载方式
路径通常是 /etc/nginx/conf.d/(yum/apt 安装)或 /usr/local/nginx/conf/conf.d/(源码编译,需手动创建)。它本身不被 Nginx 自动识别,真正起作用的是主配置文件里这行:
include /etc/nginx/conf.d/*.conf;
这行一般写在 nginx.conf 的 http{} 块内部。Nginx 启动时,会按字母顺序读取该目录下所有以 .conf 结尾的文件,并把内容“拼进去”,等效于直接写在 http 块里。
怎么写 conf.d 里的文件
每个 .conf 文件应专注一个逻辑单元,比如一个域名、一组 API、一套重定向规则。不能写 events 或 http 这类顶层块,只允许放能嵌套在 http{} 内的指令:
- 一个或多个
server{}块(推荐一个文件一个 server) -
upstream{}定义后端集群 -
map{}变量映射 -
geo{}或limit_req_zone等全局生效的指令(注意作用域)
示例(/etc/nginx/conf.d/example.com.conf):
server {<br> listen 80;<br> server_name example.com www.example.com;<br> root /var/www/example;<br> index index.html;<br>}
命名与协作规范
文件名直接影响加载顺序和可维护性:
- 用数字前缀控制优先级:如
00-global.conf(通用限流)、10-api.conf、90-redirects.conf - 避免模糊命名:
test.conf、1.conf容易误删或冲突 - 停用配置不删文件,改后缀即可:
site.conf → site.conf.disabled - 多个文件不能定义相同
listen + server_name组合,否则启动报错duplicate server name
验证与调试技巧
修改后别急着 reload:
- 运行 nginx -t 检查语法是否合法
- 用 nginx -T 查看最终合并后的完整配置(含所有 include 展开结果)
- 若发现某项设置没生效,先确认它是否被后加载的文件覆盖(同作用域下,后加载者胜出)
- 日志路径、SSL 证书路径等务必用绝对路径,避免因工作目录不同导致读取失败


















