【问题标题】:Unable to access Sinatra app on host machine with Vagrant forwarded ports无法使用 Vagrant 转发端口访问主机上的 Sinatra 应用程序
【发布时间】:2014-01-21 06:35:25
【问题描述】:

使用ruby app.rbforeman start 启动我的Sinatra 应用程序后,我无法使用localhost 和主机上的相应端口访问我的应用程序。我还可以在来宾机器的外壳中 curl 到应用程序,而在主机上 curl 请求失败。据我所知,来宾机器上不应该有防火墙,因为我使用的是 Vagrant Ubuntu 映像。

我的 Vagrantfile 如下:

Vagrant.configure('2') do |config|
  config.vm.box = 'precise32'
  config.vm.box_url = 'http://files.vagrantup.com/precise32.box'
  config.vm.network :forwarded_port, guest: 4567, host: 4567
end

【问题讨论】:

  • 可能是因为默认情况下在开发模式下 Sinatra only listens to localhost,而不是 0.0.0.0(我不知道 Vagrant 如何处理转发以及客人如何看到任何要求)。在您的应用中使用set :bind, '0.0.0.0' 是否使其可用?

标签: ruby http ubuntu sinatra vagrant


【解决方案1】:

在开发模式下运行时默认为Sinatra only listens to localhost,而不是0.0.0.0(此更改是由于security considerations而进行的)。

要允许来自任何接口的请求,请将set :bind, '0.0.0.0' 添加到您的应用文件中,或者使用-o 选项启动您的应用,例如ruby myapp.rb -o 0.0.0.0.

您可以将其设置为分配给客人的实际地址,但我不知道是否值得。

【讨论】:

  • 当通过shotgun 运行时,:bind 命令似乎不起作用,但-o 选项工作得很好。
  • @ajsharma 我查看了它,发现 shotgun 默认通过主机选项“127.0.0.1”,因此这将覆盖 :bind 命令。 source code
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
  • 2011-09-18
  • 2015-01-12
  • 2019-04-12
  • 2019-05-04
  • 1970-01-01
相关资源
最近更新 更多