conf.d目录非nginx强制生成,而是约定俗成的模块化配置组织方式;其存在与否不影响nginx运行,关键在于nginx.conf中是否正确定义include指令加载该目录下合法.conf文件,并确保目录权限为755且内容符合语法规范。

conf.d 目录本身不是 Nginx 安装时强制生成的,而是约定俗成的配置组织方式。它丢失后不影响 Nginx 运行,但会打破常规管理逻辑——关键不是“恢复目录”,而是确保 nginx.conf 正确包含它,且目录下有合法配置文件。
确认 nginx.conf 是否启用 conf.d
打开主配置文件(通常是 /etc/nginx/nginx.conf 或源码安装下的 /usr/local/nginx/conf/nginx.conf),在 http { ... } 块内查找是否有这一行:
-
include /etc/nginx/conf.d/*.conf;(CentOS/Debian 默认路径) - 或
include /usr/local/nginx/conf/conf.d/*.conf;(源码安装常见路径)
如果没有,就在 http 块末尾手动加上对应路径的 include 行;路径必须与你打算创建的目录一致,否则不会加载。
手动创建 conf.d 目录及权限
执行以下命令(以标准路径为例):
sudo mkdir -p /etc/nginx/conf.dsudo chown root:root /etc/nginx/conf.dsudo chmod 755 /etc/nginx/conf.d
注意:Nginx 主进程以 root 启动,但 worker 进程通常以 nginx 或 www-data 用户运行,因此目录需对组和其他用户有读取权限(755),但无需写入权限。
添加一个基础站点配置文件
在 /etc/nginx/conf.d/ 下新建一个 default.conf(或任意 .conf 文件名),内容示例如下:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
保存后,用 sudo nginx -t 检查语法是否正确。若提示 success,再 sudo systemctl reload nginx(或 sudo nginx -s reload)生效。
补充说明:为什么 default.conf 经常“不见”
官方 RPM 包(如 nginx.org 提供的)默认不放 default.conf 在 conf.d 中;它通常只提供最小化 nginx.conf,把基础 server 块直接写在里面。所以 conf.d 是空的、甚至不存在,属于正常现象。只要主配置里 include 了它,且你放入合法 .conf 文件,Nginx 就会按规则加载。











