nginx中conf.d配置和sites-available配置的区别和联系
·
conf.d和site-available的定义
conf.d
-
是Nginx的默认目录,用于存放通用配置文件。
-
通用配置文件以 .conf结尾。
-
配置文件通常直接在 nginx.conf 中通过 include 指令引入:
include /etc/nginx/conf.d/*.conf; -
常用于:
1. 全局配置
2. 定义简单的虚拟主机或代理配置
sites-available
- 是一种更具组织性、便于管理的约定目录(不是默认目录)
- 通常配合 sites-enabled 使用:
1. sites-available: 存放所有站点配置文件。
2. sites-enabled: 通过符号链接 (ln -s) 指向 sites-available 中已启用的站点配置文件。 - 这种结构提供了一种方便的方式来启用或禁用站点配置。
它们的区别

他们的联系
- 配置文件加载方式
- conf.d 中的 .conf文件默认被直接加载,无需额外操作。
- sites-available中的文件需要手动创建符号链接到sites-enabled,并通过include /etc/nginx/sites-enabled/;加载。
- 可替代性
- 从功能上来说,两者可以互换。
- 你可以将所有站点配置文件放在 conf.d 中,也可以将全局配置放在 sites-available 中,只要通过 include 指令正确引入即可。
- 推荐使用场景
- conf.d 适合小型项目,或者仅有少量配置的简单场景。
- sites-available 和 sites-enabled 更适合管理多个站点,提供更清晰的启用/禁用管理流程。
使用示例
conf.d示例
目录结构:
/etc/nginx/
├── nginx.conf
├── conf.d/
│ ├── default.conf
│ ├── api_proxy.conf
nginx.conf文件中:
http {
include /etc/nginx/conf.d/*.conf;
}
conf.d/default.conf 中:
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
sites-available 和 sites-enabled 示例
目录结构:
/etc/nginx/
├── nginx.conf
├── sites-available/
│ ├── default
├── sites-enabled/
│ ├── default -> /etc/nginx/sites-available/default
nginx.conf 文件中:
http {
include /etc/nginx/sites-enabled/*;
}
sites-available/default中:
server {
listen 80;
server_name ip/域名;
location /appi/ {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
root /var/www/vue-app/frontend/dist;
index index.html;
try_files $uri /index.html;
}
}
启用default:
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
禁用 default:
rm /etc/nginx/sites-enabled/default
总结
- 小型部署或单站点项目:直接使用 conf.d 即可,简单快捷。
- 多站点部署或复杂管理场景:推荐使用 sites-available 和 sites-enabled,便于启用/禁用管理。
- 两者本质上可以互换,选择适合自己工作流的方式即可。
我在配置flask后端时遇到了这个问题,简单来说就是两种方法二选一,不要混合使用,建议使用后一种方法,希望可以帮到大家。
更多推荐
所有评论(0)