![Apache 按照什么顺序加载 conf 文件以及哪些文件?](https://linux22.com/image/1394762/Apache%20%E6%8C%89%E7%85%A7%E4%BB%80%E4%B9%88%E9%A1%BA%E5%BA%8F%E5%8A%A0%E8%BD%BD%20conf%20%E6%96%87%E4%BB%B6%E4%BB%A5%E5%8F%8A%E5%93%AA%E4%BA%9B%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在查看一台安装了 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/*.conf
apache 的情况下,将加载名称以 结尾的所有文件.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>