所有请求都定向到一个虚拟主机

所有请求都定向到一个虚拟主机

我刚刚安装了 Apache 2.2,并尝试在同一服务器配置上托管两个域。我首先创建了一个虚拟主机 (一个),并调试了我的配置,以便它正常工作。当我尝试添加虚拟主机百科,并尝试访问它,我得到的只是 a.com 的正确页面。两个虚拟主机都指向同一个静态 IP 地址。服务器在 VPS 上运行 CentOS。

/usr/local/apache2/conf/httpd.conf具有基本配置,部分包含在下面,但我有httpd.conf Include第二个文件,clients.confIncludes每个站点的配置,位于不同网站的主目录中。(每个站点都有自己的帐户,目录为webscriptsdataconfig。)

httpd.conf:

Listen 80

NameVirtualHost [ip]
# [...]
Include /usr/local/apache2/conf/clients.conf

客户端.conf:

Include /home/[a]/conf/apache/vhost.conf
Include /home/[b]/conf/apache/vhost.conf

/home/[a]/conf/apache/vhost.conf

<VirtualHost [ip]>
    ServerName www.[a].com
    ServerAlias [a].com
    ServerAdmin [me]@[a].com
    DocumentRoot /home/[a]/web/home
    ErrorDocument 404 "http://www.[a].com/error/?404"

    <Directory /home/[a]/web/home>
        Options -Indexes FollowSymLinks
        # Don't allow any .htaccess files
        AllowOverride None
        # Allow everyone to access
        Order allow,deny
    </Directory>
</VirtualHost>

/home/[b]/config/apache/vhost.conf

<VirtualHost [ip]>
ServerName www.[b].com
ServerAlias [b].com
ServerAdmin admin@[b].com
DocumentRoot /home/[b]/web/home
ErrorDocument 404 "http://www.[b].com/error/?/404/"

<Directory /home/[b]/web/home>
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>
<VirtualHost [ip]>
ServerName beta.[b].com
DocumentRoot /home/[b]/web/home

<Directory /home/[b]/web/home>
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

(抱歉,代码太多了,但我不知道需要多少。)

有人能看出我的代码有问题吗?我认为它看起来几乎与VirtualHost 示例(第一个),除了我扩展了“此处的其他指令”并使用了完整的 IP 地址,而不是通配符*,这在示例下方的“注意:”中进行了描述。

编辑

根据评论的建议,我尝试了apachectl -S,得到了以下输出:

# /usr/local/apache2/bin/apachectl -S
VirtualHost configuration:
[ip]      is a NameVirtualHost
         default server www.[a].com (/home/[a]/conf/apache/vhost.conf:5)
         port 80 namevhost www.[a].com (/home/[a]/conf/apache/vhost.conf:5)
Syntax OK

不应该[b].com出现在这里吗?

答案1

[b].com显示表示[b]未加载或未识别(通常是后者)。最常见的原因是 NameVirtualHost 中列出的 IP 与 中列出的 IP 不匹配<VirtualHost>;这就是为什么*:80通常建议使用的原因之一。

无论如何,有一个简单的测试来查看文件是否正在被加载:只需在[b].com的配置文件中包含一个无效的配置命令,然后看看httpd -t(或者service httpd configtest,因为您在 CentOS 上)是否报告错误。

答案2

在尝试 BMDan 的建议时,我找到了解决问题的方法。我打开了clients.conf,它应该是(并保存为)包含来自客户端a和 的文件b。相反,它只有 的包含a。我不知道为什么它没有包含正确的数据,但我的 Apache 安装现在正常工作了。

我向所有帮助我解决这个问题的人表示感谢,如果这个问题是我的错误,我深表歉意。

相关内容