Apache 虚拟主机服务的虚拟主机不匹配

时间:2021-06-02 07:50:00

标签: apache proxy xampp virtual-machine vhosts

我设置了一个带有两个虚拟主机的 Apache 服务器,它的行为非常奇怪。我有一个普通的网络服务器,在所有情况下都应该是服务器,除非域名是“biblio.name”或“biblio-intra.name”,应该重定向到位于我的笔记本电脑上的虚拟机,在 Linux 上提供另一个网络服务。在我的笔记本电脑上,我将 xampp 用于 Apache 服务器。我的 apache/conf/extra 文件夹中有以下“httpd-vhosts.conf”:

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs"
    ServerName sis.name/
    ServerAlias *
</VirtualHost>

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass "/" "http://127.0.0.1:8080/"
    ProxyPassReverse "/" "http://127.0.0.1:8080/"
    ServerName biblio.name/
    ServerAlias biblio-intra.name/
</VirtualHost>

所以我希望它将所有请求重定向到“biblio.name”并照常提供其余请求。然而,它没有! 当我在浏览器中输入我的静态 ip 地址(从路由器分配)时,我得到正常的 htdocs,非常好。当我输入 biblio.name:8080 时,我也按预期正常为虚拟机提供服务(显然,因为 8080 自动使用虚拟机的重定向规则。)但是,当我输入“sis.name”时,它会将我重定向到虚拟机机器,当我输入“biblio.name”时,它会从 htdocs 中为我服务。 我从来没有经历过这样的行为,我不明白,为什么它服务于应该服务的主机。 我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

由于某种原因我不知道(不再),我所有的 apache 虚拟主机配置对于 ServerNameServerAlias 都具有相同的值。此外 / 似乎很奇怪。您可以尝试将 biblio-intra.name 列为第二个选项,但它首先应该重复 ServerName 中的值:

<VirtualHost *:80>
    ServerName   sis.name
    ServerAlias  sis.name
    DocumentRoot "C:/xampp/htdocs"
</VirtualHost>


<VirtualHost *:80>
    ServerName        biblio.name
    ServerAlias       biblio.name biblio-intra.name
    ProxyPreserveHost On
    ProxyRequests     Off
    ProxyPass         "/" "http://127.0.0.1:8080/"
    ProxyPassReverse  "/" "http://127.0.0.1:8080/"
</VirtualHost>