如何在apache2中在同一IP下运行多个子域名

如何在apache2中在同一IP下运行多个子域名

我正在尝试在同一个 IP 地址下运行 dev1.domain.com 和 dev2.domain.com。我的虚拟主机配置正确。当我尝试访问 dev2.domain.com 时,它会自动重定向到 dev1.domain.com。我运行了以下命令,apachectl -t -D DUMP_VHOSTS它显示了以下输出

*:80                   is a NameVirtualHost
         default server dev1.domain.com (/etc/apache2/sites-enabled/conv.conf:1)
         port 80 namevhost dev1.domain.com (/etc/apache2/sites-enabled/conv.conf:1)
                 alias www.dev1.domain.com
         port 80 namevhost dev2.domain.com (/etc/apache2/sites-enabled/find.conf:1)
                 alias www.dev2.domain.com

如您所见,apache2 将 dev1.domain.com 作为默认服务器。我该如何避免这种情况?

为了简单起见,我将在下面添加虚拟主机配置

对于 dev.domain.com

    <VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName dev1.domain.com
    ServerAlias www.dev1.domain.com
    DocumentRoot /var/www/folder/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/folder/>
         AllowOverride All
    </Directory>
</VirtualHost>

对于 dev2.domain.com

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName dev2.domain.com
    ServerAlias www.dev2.domain.com
    DocumentRoot /var/www/another_folder/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/finder/>
         AllowOverride All
    </Directory>
</VirtualHost>

提前致谢。

答案1

当配置中没有其他 vhost 与域匹配时,将使用默认 vhost 提供服务。

除非另有配置,默认 vhost 是第一个配置的 vhost。

如果正在提供服务的默认虚拟主机,则您尝试连接的域与配置的任何虚拟主机都不匹配。

使用 include 语句将文件按词汇顺序读入 apache 配置中。

在您显示的 vhost 配置中,您没有 dev1,这并没有真正的帮助 - 细节很重要。

相关内容