![CentOS vhosts 导致 Vagrant Share 命令出现问题](https://linux22.com/image/1448750/CentOS%20vhosts%20%E5%AF%BC%E8%87%B4%20Vagrant%20Share%20%E5%91%BD%E4%BB%A4%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
我在 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
事实证明,这里的问题实际上是虚拟主机中的站点。它包含一个,.htaccess
它www.
为 URL 添加了前缀,其中包含许多域名例外(包括以 .loc 结尾的任何域名)。vagrant share
尝试使用 IP 地址而不是域名通过 http 进行连接时,触发了此规则,并且重定向到似乎www.192.168.10.187
导致了 ruby 错误,因为这是一个无法访问的 URL。简而言之 - 是我的错。