使用ruby app.rb
和foreman start
启动我的Sinatra应用程序后,我无法使用localhost和主机上的相应端口访问我的应用程序。我也可以从来宾机器的shell中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
答案 0 :(得分:16)
默认情况下,在开发模式下运行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
。
您可以将此设置为分配给访客的实际地址,但我不知道是否值得。