Apache 虚拟主机服务于不匹配的虚拟主机
Apache Virtual Hosts serves the vhost NOT matched
我设置了一个带有两个虚拟主机的 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 为我服务。
我从来没有经历过这样的行为,我也不明白,为什么它服务于本应服务的相反主人。
我错过了什么吗?
出于某种我不知道的原因(不再),我所有的 apache vhost 配置都具有相同的 ServerName
和 ServerAlias
值。另外,其中的 /
似乎很奇怪。您可以尝试将 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>
我设置了一个带有两个虚拟主机的 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 为我服务。 我从来没有经历过这样的行为,我也不明白,为什么它服务于本应服务的相反主人。 我错过了什么吗?
出于某种我不知道的原因(不再),我所有的 apache vhost 配置都具有相同的 ServerName
和 ServerAlias
值。另外,其中的 /
似乎很奇怪。您可以尝试将 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>