Apache 2.4 vhost 不工作

Apache 2.4 vhost 不工作

我们有一台安装了 Apache 2.4.9 的新 Centos 服务器。我正在尝试让 vhost 工作。DNS 解析到正确的机器,我可以看到默认的 Apache 页面,所以这不是防火墙问题,Apache 正在运行。

/etc/httpd/conf/httpd.conf

Include conf.d/*.conf

/etc/httpd/conf.d/vhosts.conf

<VirtualHost *>
    ServerName www.abctest.com
    DocumentRoot /websites/abctest.com/htdocs    
    <Directory /websites/abctest.com/htdocs/public>
            AllowOverride All
    </Directory>
</VirtualHost>

/etc/httpd/模块

modules/mod_vhost_alias.so

网站

/websites/abctest.com/htdocs 中有一个 index.php 文件,其中包含 helloworld。重新启动 httpd 后,我仍然可以看到 Apache 页面,而不是 helloworld 文本。

我怎样才能让它工作?

答案1

尝试在每个 VirtualHost 块中放置一个特定的 IP 和端口。因此,请输入:

<VirtualHost 127.0.0.1:80>

答案2

您的VirtualHost配置表明 apache 接受来自主机中任何接口的请求,但它应该有一个标Host: www.abctest.com头来选择。通常,任何其他标头都会导致 apache 使用默认的 VirtualHost。DocumentRoot/websites/abctest.com/htdocsHost

如果您尝试使用 打开网页,http://localhost那么您最终会获得默认页面DocumentRoot

您可以使用命令更轻松地检查这一点curl

curl -L 'http://www.abctest.com'

并且还要确保您www.abctest.com/etc/hosts文件中有一个 IP 到主机的映射,如下所示。

127.0.0.1   www.abctest.com www

答案3

需要检查以下几项:

确保你没有其他虚拟主机随后可能被调用的条目。

通常,*VirtualHosts 中的条目用于没有 ServerName 的请求,因此,尽管我期望它能起作用,但请尝试将第一行从:

<VirtualHost *>

<VirtualHost www.abctest.com:80>

(假设您使用主机的默认端口 80)。

除了这些随机项目之外,请查看您的 access_log 和 error_log。它们可以帮助您识别正在使用的路径,然后在 .conf 文件中定位,以帮助缩小冲突/原因的范围。

答案4

您需要启用基于名称的虚拟主机。

/etc/httpd/conf/httpd.conf在我的 Centos 盒子上,它位于

# NameVirtualHost *:80

您需要从行首删除“#”符号以启用它,然后重新启动 Apache。

如果没有上述内容,Apache 将使用基于 IP 的虚拟主机。由于(我推测)您的主机名和虚拟主机名解析为相同的 IP 地址,因此第一个匹配的 IP 地址将获胜,在您的情况下,该 IP 地址是 Apache 起始页。

相关内容