Virtual Box端口转发Ruby Sinatra的痛苦:4567 / Shotgun:9292

时间:2017-01-30 21:47:48

标签: ruby linux sinatra virtualbox shotgun

我在CentOS 7.0主机上有一个VirtualBox Windows Ten来宾操作系统用于开发,而端口转发根本不起作用。

我有一个NAT'd网络适配器(我不能在这个网络上使用桥接适配器)并且公平地说我对桥接适配器更加舒服。但其他一切都在游泳。除了端口4567和9292不会转发,端口22和端口80工作正常。

我有

  • 在客户端上为NAT'd适配器上的VirtualBox中的端口228045679292添加了端口转发。
  • 完全禁用CentOS 7.0上的firewalld(并重新启动),然后排除
  • 所有端口在本地主机上工作正常,即在localhost:4567中,localhost:9292
  • 是完美的
  • 切换SELINUX客人(为了更好的衡量标准)
  • 每次我进行网络时系统地重新启动整个VM主机 - > portforward alteration
  • 尝试10.0.2.15:4567 / 10.0.2.15:9292徒劳地尝试购买

我一直在端口22上进行ssh,端口80正常工作

这是一个流量问题还是防火墙问题,VirtualBox界面上是否存在某种对我隐藏的网络过滤?

我很乐意帮忙。

1 个答案:

答案 0 :(得分:1)

注意:原因是SHOTGUN / RUBY不是VirtualBox,也不是防火墙,也不是端口转发

@Matt解决了这个......他的link in the comments是正确的,对此的修复是两件事之一:(实际上shotgun在开发模式下运行ruby导致它)

原因:

  • RUBY以默认set :bind, 'localhost'开发模式运行。 (link)

解决方案:

  • RUBY使用选项set :bind, '0.0.0.0'运行(也可以在config.ru中)

好消息是,如果你想使localhost:4567工作这是你的票,将行set :bind, '0.0.0.0'添加到你的配置中你很高兴

恼人的如果你跑去了,那就不会被捡起来

坏消息是,如果你想制作localhost:9292工作霰弹枪在这里有自己的意思:

  • 实际上shotgun不会看到那些红宝石配置,它会采用它自己的启动策略,所以你必须在--host=0.0.0.0模式下运行猎枪:EG:
  • # shotgun --server=thin --port=9292 --host=0.0.0.0 config.ru