apache配置问题,最后加载的虚拟主机成为通配符域

乔·妈妈

当我将浏览器指向vhost1.test.com时,我从/etc/httpd/conf.d/中的2个单独的conf文件中加载了2个虚拟主机,它会像vhost2.test.com一样加载正确的index.html。但是,Web服务器现在以第2个vhost作为服务器通配符域进行响应,如果我为foo.test.com输入dns条目,则将加载vhost2的页面。如果删除vhost2的配置,则现在vhost1也会发生相同的行为。我的配置中有什么导致最后加载的虚拟服务器成为通配符域?通过这种配置,当我将浏览器指向test.com而不是加载通配符时,apache还将忽略/ var / www / html的默认文档根目录。没有任何一个vhost.conf,按预期方式将文件加载到/ var / www / html中。

vhost1.conf

<VirtualHost *:80>
DocumentRoot /vhost1
ServerName vhost1.test.com
ErrorLog logs/vhost1-error_log
CustomLog logs/vhost1-access_log common
<Directory "/vhost1">
order deny,allow
Require all granted
Allow from localhost 127.0.0.1 192.168.
</Directory>

vhost2.conf

<VirtualHost *:80>
DocumentRoot /vhost2
ServerName vhost2.test.com
ErrorLog logs/vhost2-error_log
CustomLog logs/vhost2-access_log common
<Directory "/vhost2">
order deny,allow
Require all granted
Allow from localhost 127.0.0.1 192.168.
</Directory> 

the_velour_fog

从有关服务器如何选择基于名称的适当虚拟主机的apache文档中

IP和端口组合的默认基于名称的虚拟主机
如果在包含最特定的匹配IP地址和端口组合的虚拟主机集合中未找到匹配的ServerName或ServerAlias,则将使用将与之匹配的第一个列出的虚拟主机。

因此,当您将DNS指向不存在的“ foo.test.com”时,HTTP请求中包含标头条目host: foo.test.com,apache不能将其与您的VHOSTS匹配,因此,它始终会提供它找到第一个包含VHOST容器的文件
由于文件是按字母顺序列出的,因此第一个文件将是按字母顺序列出的顺序最少的文件。
因此,实际上,如果您的VHOST-或更重要的是,它们的文件名是:

  • 虚拟主机1
  • 虚拟主机2

如果apache无法通过IP地址或主机名将请求与特定的VHOST匹配,则将始终为vhost1提供服务。

是的,当您首次发现它时,这非常令人震惊,这就是为什么某些apache软件包将定义文件名为的默认虚拟主机的原因000_default_vhost
这样,您可以确保如果请求与按主机名或IP匹配的VHOST不匹配,则将始终提供此VHOST。
您应该考虑以这种方式配置服务器,该服务器000_default_vhost将始终拒绝带有404的请求,因为它们显然不适合您的“适当”域。
如果这对于Apache而言似乎是不合理的行为,请注意,nginx的行为方式相同。
如果您使用的是nginx并希望防止使用未定义的服务器名称处理请求

您还可以定义仅丢弃请求的服务器:

server {
    listen      80;
    server_name "";
    return      444;
}

并将其放入按字母顺序第一个出现的文件,即 /etc/nginx/sites-available/000_catchall

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Apache 2虚拟主机上指向子域的问题?

来自分类Dev

Apache虚拟主机问题

来自分类Dev

Apache 2.4通配符子域虚拟主机

来自分类Dev

Windows 10 Apache虚拟主机配置

来自分类Dev

Apache虚拟主机配置错误

来自分类Dev

Windows 10 Apache虚拟主机配置

来自分类Dev

默认虚拟主机覆盖通配符子域虚拟主机

来自分类Dev

虚拟主机问题

来自分类Dev

nginx:配置不带子域的多个虚拟主机

来自分类Dev

在apache虚拟主机中添加localhost子域

来自分类Dev

Apache虚拟主机不适用于www域

来自分类Dev

具有动态子域的 Apache 虚拟主机

来自分类Dev

Apache 虚拟主机问题还是 dns 问题?

来自分类Dev

Apache重新加载跳过虚拟主机上的错误

来自分类Dev

apache虚拟主机配置CentOS7

来自分类Dev

在额外的文件中配置Apache虚拟主机

来自分类Dev

Apache虚拟主机别名

来自分类Dev

当虚拟主机设置为 IP 而不是通配符时,Apache 会中断

来自分类Dev

单个域上的多个虚拟主机

来自分类Dev

DNS配置将子域指向另一个虚拟主机

来自分类Dev

为子域配置虚拟主机需要哪些 DNS 记录?

来自分类Dev

基本虚拟主机配置 + 特定于域的自定义

来自分类Dev

Netbeans-虚拟主机的配置

来自分类Dev

使用多个虚拟主机配置Postfix

来自分类Dev

Laravel Homestead虚拟主机配置

来自分类Dev

使用多个虚拟主机配置Postfix

来自分类Dev

在多个虚拟主机之间共享配置

来自分类Dev

如何在Apache中使用单个配置文件配置多个虚拟主机?

来自分类Dev

我应该如何在 Apache 中使用单个配置文件配置多个虚拟主机?