Apache 按照什么顺序加载 conf 文件以及哪些文件?

Apache 按照什么顺序加载 conf 文件以及哪些文件?

我正在查看一台安装了 webframework 的 CentOS 6.5 服务器,该服务器多年来已被许多人添加。/conf 中似乎有 5 个活动的 .conf 文件,包括 httpd.conf。

在 httpd.conf 中,包含以下内容

Include conf.d/*.conf

并且会抓取该目录中的所有文件,但是没有应用我所知道的任何特定顺序,那么 /conf(无 .d)目录呢?

是否有一个设置说明加载顺序,或者它们只是从 az 中获取?

我不是服务器管理员,我是一名开发人员,问题在于将文件上传到 /Temp 目录的路径,我已经检查过对于我自己关注的文件而言指定的路径是否正确。

因此,第一个问题是:

Apache 是否加载一切来自 /conf 或者是否有某处指定的列表?

第二个问题是:

Apache 按照什么顺序加载文件(按字母顺序)?

最后:

不以配置文件是否包括在内?例如,如果我将某个内容命名为 myconfig.conf.old,Apache 是否会跳过它?

答案1

顺序按字母顺序排列。它仅加载包含路径指定的内容。在Include conf.d/*.confapache 的情况下,将加载名称以 结尾的所有文件.conf

这是摘录自Apache 文档

Shell 样式 (fnmatch()) 通配符可用于一次包含多个文件,按字母顺序。此外,如果 Include 指向目录而不是文件,Apache 将读取该目录及其子目录中的所有文件。但不建议包含整个目录,因为很容易意外地将临时文件留在目录中,从而导致 httpd 失败。

答案2

Apache 根据“Include”指令加载额外配置。它可能看起来像这样:

Include conf.d/*.conf

因此,显然,它包括“conf.d”中看起来像“*.conf”的所有内容。

为了使其更加疯狂,您可以添加任意数量的带有“include”的目录,所有目录都可以包含大致相同的配置文件,所有目录都会在启动时愉快地相互覆盖......然后它们自己被各个托管目录中的 .htaccess 文件覆盖。

据我所知,httpd.conf 是第一个,然后是按包含顺序排列的目录,然后按字母顺序排列。

美好时光。您可以使用 apachectl -t 或 apachectl configtest 来了解您的配置是否会导致问题。

答案3

如果你想改变顺序,只需打开目录 sites-available 中的第一个 conf 文件,然后在第一个虚拟主机 *:80添加您的虚拟主机代码。

在我的例子中,我希望 hub.xxx.com.conf 位于 bayxxx.com.conf 之前。因此我打开 hub.xxx.com.conf 并将虚拟主机放在文件开头

例如:

<VirtualHost *:80>
    DocumentRoot /www/hub.xxx.com/www/root
    ServerName hub.xxx.com
    ServerAlias *.hub.xxx.com
    <Directory "/www/hub.xxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/bayxxx.com/www/root
    ServerName bayxxx.com
    ServerAlias www.bayxxx.com
    <Directory "/www/bayxxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>

相关内容