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-availablesites-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后端时遇到了这个问题,简单来说就是两种方法二选一,不要混合使用,建议使用后一种方法,希望可以帮到大家。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐