CentOS vhosts 导致 Vagrant Share 命令出现问题

CentOS vhosts 导致 Vagrant Share 命令出现问题

我在 Mac 上运行 Vagrant。我有一个 CentOS 6.4 机器,运行着 Virtualbox 提供程序和 puppet(在此上下文中并不重要)。这是一个基本的 Vagrantfile,用于显示我遇到的问题:

Vagrant.configure("2") do |config|

    # centos box information
    config.vm.box = "nrel/CentOS-6.5-x86_64"

    config.vm.hostname = "devbox.loc"
    config.vm.network "forwarded_port", guest: 80, host: 8080
    config.vm.network "private_network", ip: "192.168.10.187"
    config.vm.network "public_network"

end

我设置了一些虚拟主机,我通过使用私有网络 IP 修改 Mac 上的 hosts 文件,在 devsite.loc 和 othersite.loc 等 URL 上访问这些虚拟主机。这一切都按预期工作,我可以通过它们的地址访问每个虚拟主机,并查看正确的站点。

基本 vhost 文件如下所示:

<VirtualHost *:80>
        DocumentRoot /home/devsite/public_html
        ServerName devsite.loc
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot /home/othersite/public_html
        ServerName othersite.loc
</VirtualHost>

但是,如果我尝试运行,vagrant share它会失败并出现以下错误:

default: Local machine address: 192.168.10.187

/opt/vagrant/embedded/lib/ruby/2.0.0/net/http.rb:878:in `initialize': getaddrinfo: 未提供 nodename 或 servname,或者未知(SocketError)

如果我删除 vhosts 文件,vagrant share 就可以正常工作,共享默认的 Apache 页面。某些东西vagrant share显然不喜欢我的 vhosts 文件,但我不知道它可能是什么。

值得一提的是,我正在使用最新版本的 Vagrant 和 Virtualbox。

答案1

事实证明,这里的问题实际上是虚拟主机中的站点。它包含一个,.htaccesswww.为 URL 添加了前缀,其中包含许多域名例外(包括以 .loc 结尾的任何域名)。vagrant share尝试使用 IP 地址而不是域名通过 http 进行连接时,触发了此规则,并且重定向到似乎www.192.168.10.187导致了 ruby​​ 错误,因为这是一个无法访问的 URL。简而言之 - 是我的错。

相关内容