Apache 是否曾匹配过具有不同 ServerName 的虚拟主机

Apache 是否曾匹配过具有不同 ServerName 的虚拟主机

我有一个问题。我在 IP 1.2.3.4 上为 domain1.com 设置了 VirtualHost,但是 Apache 响应对 IP 1.2.3.4 的请求时忽略了 ServerName。

因此,如果我将 domain2.com 指向 1.2.3.4,我将看到 /var/www/html/domain1.com 的内容,而不是 /var/www/html/default 的内容

怎么了?

Listen 80
NameVirtualHost 1.2.3.4:80
<VirtualHost 1.2.3.4:80>
SSLEngine off
DocumentRoot /var/www/html/domain1.com
ServerName www.domain1.com:80
<Directory "/var/www/html/domain1.com">
allow from all
</Directory>
  LogLevel notice
UseCanonicalName on
</VirtualHost>

<VirtualHost _default_:80>
DocumentRoot /var/www/html/default
<Directory /var/www/html/default>
allow from all
</Directory>
</VirtualHost>

答案1

您在此处使用的_default_将匹配尚未为其他 定义的 IP 。这意味着根据您的配置,VirtualHost对 的请求将使用为定义的第一个 IP 。 的优先级由其在配置文件中的顺序定义。1.2.3.4:80VirtualHostwww.domain1.comVirtualHost

为了实现您想要的配置,请将默认配置移到VirtualHost上面www.domain1.com,并将其 IP 从 更改_default_1.2.3.4

有关这方面的详细信息,请参阅 Apache 手册,您可以在此处找到关联

相关内容