在 apache2 上创建虚拟主机

在 apache2 上创建虚拟主机

我在 apache2 上创建虚拟主机时遇到问题。我的网站托管在 debian 10 服务器上。我domain.conf在 处添加了文件/etc/apache2/sites-enabled。在domain.conf文件中,我简单地写道:

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot /var/www/domain

    ErrorLog ${APACHE_LOG_DIR}/domain-error.log
    CustomLog ${APACHE_LOG_DIR}/domain-access.log combined
</VirtualHost>

问题是,每当我提示任何服务器别名(例如xyz.domain.com或 )时,test.domain.com它都会打开index.php/var/www/domain但我只想允许domain.comwww.domain.com

答案1

当域名与虚拟主机不匹配时,将使用两个位置之一。

第一种可能性是基本配置,即您在任何虚拟主机之外的默认配置中指定的配置。因此,请检查DocumentRoot基本配置(grep DocumentRoot /etc/apache2/*如果您不知道在哪里查找,请尝试)。

其次,如果您想要一个“所有虚拟主机”配置,您可以通过创建一个与基本配置具有相同ServerNameIP/端口配置的虚拟主机来屏蔽基本配置。在与基本配置相同的配置中创建一个虚拟虚拟主机,该aaa.conf虚拟主机可以将用户发送到沙盒,或返回错误,或重定向到,或您选择的任何操作。ServerNameServerAliaswww.example.com

参考:https://httpd.apache.org/docs/2.4/vhosts/name-based.html

主要宿主消失

任何与现有请求不匹配的请求都由全局服务器配置处理,无论主机名或服务器名称如何。

当您将基于名称的虚拟主机添加到现有服务器,并且虚拟主机参数与预先存在的 IP 和端口组合匹配时,请求现在将由显式虚拟主机处理。在这种情况下,通常明智的做法是创建一个默认虚拟主机,其 ServerName 与基本服务器的 ServerName 匹配。然后可以将具有相同接口和端口但需要单独配置的新域添加为后续(非默认)虚拟主机。

相关内容