我无法让我的虚拟主机在 Apache 中正常工作

我无法让我的虚拟主机在 Apache 中正常工作

虽然我知道这个主题已经在其他一些帖子中讨论过了,其中解释了如何在 Apache 中配置虚拟主机。但问题是,在寻找问题的可能答案、在 Google 上搜索并阅读 Apache 官方文档之后,我的问题仍然无法解决。

首先,我在 CentOS 7 中安装了 Apache 2.4 并运行了一个 WordPress,并且设置了以下虚拟主机:

<VirtualHost *:80>

ServerName subdomain1.domain.com
ServerAlias www.subdomain1.domain.com
DocumentRoot /some/path/to/wordpress

<Directory "/some/path/to/wordpress">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/subdomain1-error.log"
CustomLog "logs/subdomain1-access.log" combined      
LogLevel warn

</VirtualHost>

它运行正常,但后来我决定添加一个 Moodle 安装(因为服务器没有太多流量),然后如果我在 Chrome subdomain1.domain.com 或 subdomain2.domain.com 中浏览,这并不重要,Chrome 总是转到 subdomain2.domain.com(Moodle 网站)。

我在 Chrome 和 Firefox 中尝试过,结果相同。moodle 虚拟主机是:

<VirtualHost *:80>

ServerName subdomain2.domain.com
ServerAlias www.subdomain2.domain.com
DocumentRoot /some/path/to/moodle

<Directory "/some/path/to/moodle">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

<Files ".ht*">
   Require all denied
</Files>

ErrorLog "logs/subdomain2-error.log"
CustomLog "logs/subdomain2-access.log" combined
LogLevel warn

</VirtualHost>

此外,Apache 配置文件 httpd.conf 使用指令包含这些 VirtualHosts:IncludeOptional conf.d/*.conf

该文件/etc/hosts是:

127.0.0.1   localhost 

134.122.191.221 subdomain1.domain.com

134.122.191.221 subdomain2.domain.com

我在我的 Apache Virtualhosts 配置文件中看不到任何明显的错误,所以如果有人能提示我哪里出了问题以及可能出现什么错误,我将不胜感激。

多谢。

答案1

您正在尝试设置基于名称的虚拟主机并且缺少一个重要的配置:

NameVirtualHost *:80

因此,在您的 httpd.conf 中添加上述行并重新启动 apache/httpd,它应该可以解决问题。

注意:根据Apache 2.4 文档此指令已弃用,不再需要

在2.3.11 之前的版本中,NameVirtualHost需要指示服务器特定 IP 地址和端口组合可用作基于名称的虚拟主机。在 2.3.11 及更高版本中,只要在多个虚拟主机中使用 IP 地址和端口组合,就会自动为该地址启用基于名称的虚拟主机。

但我还没有弄清楚为什么它能与上述指令一起工作。

相关内容