安装反爬虫程序Nginx Ultimate Bad Bot Blocker的时候,曾经提示缺少sites-available
和sites-enabled
目录,那么它们到底起什么作用呢?本文将记录一下sites-enabled
、sites-available
和conf.d
的功能和用法,以及它们之间的区别。
注意:由于系统和安装源的不同,Nginx的目录结构会有不同。就像我在Debian 12上通过apt安装后就只有一个conf.d
目录,必须手动创建sites-available
和sites-enabled
。
conf.d目录
conf.d
目录只是一个用于大量配置文件的通用容器。但这只是一个约定,甚至不是特定于Web服务器的。事实上,许多应用程序都可以通过这种方式进行配置。
在conf.d
中,有许多带有配置选项的文件,使用描述性名称。运行服务器时,它们按升序应用,因此,如果一个选项存在两次,则后面的选项将覆盖前面的选项。通常,这有助于确保自定义配置更新的安全性。conf.d
的特点:
- 是Nginx的默认目录,用于存放通用配置文件。
- 通用配置文件以.conf结尾。
- 配置文件通常直接在nginx.conf中通过include指令引入:
include /etc/nginx/conf.d/*.conf;
常用于:
- 全局配置
- 定义简单的虚拟主机或代理配置
sites-available和sites-enabled
sites-available
和sites-enabled
两个目录可以自行创建。
在sites-available
中,我们可以存储Web服务器的虚拟主机设置。每个站点都代表一个单独的站点,可用但未启用。配置文件通常以.conf
或者.vhost
为扩展名。sites-enabled
包含在Nginx服务器中当前启用的网站配置文件的符号链接。只有在sites-available
目录中创建了配置文件,并在sites-enabled
目录中创建了对应的符号链接,该网站的配置才会生效。
是一种更具组织性、便于管理的约定目录(不是默认目录)
通常配合sites-enabled使用:
- sites-available:存放所有站点配置文件。
- sites-enabled:通过符号链接(ln-s)指向sites-available中已启用的站点配置文件。
- 这种结构提供了一种方便的方式来启用或禁用站点配置。
总结
首先,sites-enabled
只是sites-available
的软链接,因此从本质上来说sites-available
包含了sites-enabled
目录。
由于sites-available
目录中的配置文件均可以直接放在conf.d
中并通过include调用。但为了方便配置管理,尤其适合多站点管理,建议使用sites-available
目录以便提供更加清晰地启用和禁用策略(如之前常用的Oneinstack一键安装脚本,它的虚拟机配置文件均放在自定义的vhost
目录下)。单如果只是单站点,可以不考虑这么复杂的目录结构。
最后借用网上的一张对比表作为总结。
特性 | conf.d | sites-available |
---|---|---|
默认目录 | 是Nginx默认的通用配置目录。 | 是一种约定俗成的目录,不是默认目录。 |
使用场景 | 存放全局配置或简单的站点配置。 | 存放各个站点的独立配置文件。 |
启用方式 | 所有.conf文件直接被加载 | 需要通过符号链接到sites-enabled 。 |
便捷性 | 修改即生效,无需额外操作 | 可通过添加/移除符号链接方便启用/禁用 |
复杂性 | 不适合管理多个站点 | 更适合管理多个站点配置。 |