安装反爬虫程序Nginx Ultimate Bad Bot Blocker的时候,曾经提示缺少sites-availablesites-enabled目录,那么它们到底起什么作用呢?本文将记录一下sites-enabledsites-availableconf.d的功能和用法,以及它们之间的区别。
注意:由于系统和安装源的不同,Nginx的目录结构会有不同。就像我在Debian 12上通过apt安装后就只有一个conf.d目录,必须手动创建sites-availablesites-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-availablesites-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.dsites-available
默认目录是Nginx默认的通用配置目录。是一种约定俗成的目录,不是默认目录。
使用场景存放全局配置或简单的站点配置。存放各个站点的独立配置文件。
启用方式所有.conf文件直接被加载需要通过符号链接到sites-enabled 。
便捷性修改即生效,无需额外操作可通过添加/移除符号链接方便启用/禁用
复杂性不适合管理多个站点更适合管理多个站点配置。
最后修改:2025 年 01 月 21 日
如果觉得我的文章对你有用,请随意赞赏