如何解决Apache 虚拟主机服务的虚拟主机不匹配
我设置了一个带有两个虚拟主机的 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 虚拟主机配置对于 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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。