来自服务器的空回复 - 无法连接到vagrant vm w /端口转发

mee*_*tar 27 vagrant

我在Vagrant VM中运行werkzeug(作为Tilestache设置的一部分),运行ubuntu'精确'.

在我的Vagrantfile中,我有:

config.vm.network :forwarded_port, guest: 8080, host: 8080
Run Code Online (Sandbox Code Playgroud)

当我在VM中启动服务器时,我看到:

 * Running on http://127.0.0.1:8080/
Run Code Online (Sandbox Code Playgroud)

如果我curl从VM中寻址,我会得到预期的结果.当我curl来自主机时,我得到:

curl: (52) Empty reply from server
Run Code Online (Sandbox Code Playgroud)

Chrome表示"没有收到数据."

故障排除信息

  • 服务器响应来自主机的ping
  • 端口嗅探器验证端口是否已打开
  • netstat -ntlp | grep 8080在vm中运行表明服务器正在侦听8080
  • 我的本地hosts文件没有任何奇怪的冲突
  • 我也转发22 => 2222,我可以毫不费力地进入
  • 我已经禁用了主机上的防火墙,我不相信客户端上有防火墙(iptables和ufw已被禁用,至少)
  • 我已经设置auto_correct: true以防有冲突(没有)

我知道我可以建立一个专用网络,但我想了解为什么这不起作用以及如何排除故障.

还有其他想法吗?

mee*_*tar 69

从VM中运行服务器时,请在0.0.0.0而不是127.0.0.1上启动服务器.

127.0.0.1只能由本地计算机访问,对于VM而言,VM意味着VM无法访问它!可以从本地网络上的任何位置访问0.0.0.0 ,其中VM包括主机.

答案来自此处:使用Vagrant进行端口转发时连接重置

(显然从这里得到了答案:https://stackoverflow.com/a/5999945/738675)

在以下帮助下:https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

谷歌诱饵:

如果这是问题,您可能会收到以下错误:

  • Chrome:"没有收到数据"
  • Firefox:"连接已重置 - 在加载页面时重置了与服务器的连接."
  • Safari:"Safari无法打开页面[URL],因为服务器意外断开了连接"
  • curl:"来自服务器的空回复"


小智 23

/etc/hosts更改行
127.0.0.1 localhost - > 0.0.0.0 localhost
然后restart server

  • 这非常有效.请注意,此设置是在vagrant guest虚拟机上设置的,而不是在主机系统上设置的.非常明显,但当你来自随机谷歌搜索快速修复时不那么明显. (10认同)