CentOS 上的 httpd 仅解析第一个 VirtualHost

CentOS 上的 httpd 仅解析第一个 VirtualHost

我刚刚获得了一个新的云服务器,在设置它时,我可以通过将浏览器指向我的服务器的 IP 地址来访问 Web 根目录,但域名仍在传播,因此当我访问它们时,它们无法解析。

当我将浏览器指向服务器的 IP 地址时,它实际上解析为我设置的第一个 VirtualHost,不应该是根文件夹。当我转到IP地址/路径, 不只是IP地址

服务器设置:
主持人:Rackspace 云服务器
操作系统:CentOS 6
虚拟主机

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.wphax.com
    ServerAlias wphax.com *.wphax.com
    DocumentRoot /var/www/wphaxcom
    ErrorLog /var/www/wphaxcom/error.log
    CustomLog /var/www/wphaxcom/access.log combined
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.dnadvanced.com
    ServerAlias dnadvanced.com *.dnadvanced.com
    DocumentRoot /var/www/dnadvancedcom
    ErrorLog /var/www/dnadvancedcom/error.log
    CustomLog /var/www/dnadvancedcom/access.log combined
</VirtualHost>

有什么想法可能导致这种情况,以及如何设置它,以便无法通过输入 IP 地址来访问根目录,但域名将正确解析到其指定的文件夹?谢谢。

答案1

来自基于名称的虚拟主机支持Apache 服务器文档中的文章:

基于 IP 的虚拟主机使用连接的 IP 地址来确定要提供的正确虚拟主机。[...]

基于名称的虚拟主机通常更简单,因为您只需配置 DNS 服务器以将每个主机名映射到正确的 IP 地址,然后配置 Apache HTTP 服务器以识别不同的主机名。[...]

通过直接指定 IP 地址,您本质上是选择配置文件中列出的第一个虚拟主机。由于您从未在配置文件中指定 IP 地址,因此该主机正在监听所有 IP。Apache 如何确定要服务的网站取决于从客户端请求的 HTTP 标头中收到的信息。

除非您可以通过独立的 IP 地址或不同的端口号(即将第二个端口号设置为端口 81)访问两个虚拟主机,否则您将不得不等待域名更改传播。


如果你真的现在需要测试服务器,您可以尝试在每次请求后手动修改 HTTP 标头(使用类似篡改数据您可以使用 Apache 软件(Firefox 的插件)为您的浏览器提供正确的页面。

相关内容