【问题标题】:Vagrant: Cannot access Rails server via localhost:8080Vagrant:无法通过 localhost:8080 访问 Rails 服务器
【发布时间】:2015-12-01 13:51:58
【问题描述】:

我的Vagrantfile 包含:

config.vm.box = "ubuntu/trusty64"
config.vm.network "forwarded_port", guest: 3000, host: 8080

vagrant up 报告:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Forwarding ports...
    default: 3000 => 8080 (adapter 1)
...

使用非特权用户(deploy') I runrails server` 报告您所期望的:

Booting WEBrick => Rails 4.2.5 application starting in development on http://localhost:3000
[2015-12-01 13:34:41] INFO  WEBrick::HTTPServer#start: pid=1638 port=3000

vagrant vm $ netstat -ntlp 内部报告:

tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      1638/ruby

所以我知道 Rails 服务器肯定在监听 3000 端口

当我在主机 (OS X) 上浏览到 http://localhost:8080 时,我得到一个 ERR_EMPTY_RESPONSE

我尝试过停止/启动虚拟机、重新加载它等。我是否遗漏了一些明显的东西?

提前谢谢你

【问题讨论】:

  • 你能检查一下你的主机在 8080 端口上是否没有运行任何东西吗?很可能一个进程已经绑定了端口,因此它不能被 vagrant 使用。我不知道在这种情况下 vagrant up 是否会报错
  • @FrédéricHenri 我已将端口 (8080) 更改为许多其他值,并且行为是相同的。主机上没有任何东西在使用我尝试过的端口。
  • @RobertJoseph 在来宾 VM 中运行 curl -I http://localhost:3000/ 时的输出是什么?
  • @FrédéricHenri 正是我所期望的:goo.gl/Cnpcij(要点)
  • 您的访客可能有防火墙规则阻止从外部访问端口 3000

标签: ruby-on-rails vagrant ubuntu-14.04 portforwarding


【解决方案1】:

尝试使用 rails server -b 0.0.0.0 启动 rails

【讨论】:

    【解决方案2】:

    /etc/hosts 中,将 0.0.0.0 与 localhost 关联。当服务在 0.0.0.0 上侦听时,这意味着该服务正在侦听所有已配置的网络接口,当在 127.0.0.1 上侦听时,服务仅绑定到环回接口(仅在本地计算机上可用)。

    在客户机上的/etc/hosts 中,将127.0.0.1 localhost 替换为0.0.0.0 localhost

    然后重启 Rails 服务器。

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      相关资源
      最近更新 更多