Ruby on rails 无法访问防火墙后面运行的rails服务器

Ruby on rails 无法访问防火墙后面运行的rails服务器,ruby-on-rails,ruby,firewall,Ruby On Rails,Ruby,Firewall,我试图在朋友家中运行ror应用程序,但无法从外部访问该应用程序。这是我们已经尝试过的 应用程序已使用创建 $ rails new <application name> 开发服务器在上启动并可访问 接下来,我们在他用来连接互联网的路由器上激活了端口转发:我们将外部端口3000映射到运行rails服务器的内部主机上的端口3000。当我尝试从外部(使用firefox)打开页面时,我得到一个错误页面:无法连接到主机,主机可能已关闭,请稍后尝试连接 我们尝试过的事情: 更改端口转发80->8

我试图在朋友家中运行ror应用程序,但无法从外部访问该应用程序。这是我们已经尝试过的

应用程序已使用创建

$ rails new <application name>
开发服务器在上启动并可访问

接下来,我们在他用来连接互联网的路由器上激活了端口转发:我们将外部端口3000映射到运行rails服务器的内部主机上的端口3000。当我尝试从外部(使用firefox)打开页面时,我得到一个错误页面:无法连接到主机,主机可能已关闭,请稍后尝试连接

我们尝试过的事情:

  • 更改端口转发80->80
  • 已安装并启动Apache:可以访问默认的Apache页面
  • 停止Apache并在端口80上启动rails服务器(使用sudo,否则无法使用端口80):无法访问rails服务器
  • 我还检查了运行rails服务器的机器的防火墙。操作系统是ubuntu 12.04:防火墙(至少是ufw)没有激活。我还可以使用端口22/ssh连接到该机器

    总结:

    • rails服务器可在本地主机的端口3000上访问
    • 端口转发适用于端口22和80,ssh服务器和apache服务器都可以访问
    • 无法从外部在端口80和3000上访问rails服务器
    我能想到的唯一一件事是rails可能有一种类似于Django的ALLOWED_主机的机制,它拒绝外部请求,因为它们针对的是不同于localhost的主机。然而,我还没有找到关于这个话题的任何东西。此外,应用程序的日志文件不会显示rails服务器拒绝的任何连接尝试


    所以我们没有想法了。接下来我们应该检查什么?

    在Rails 4.2之前,Rails服务器的默认设置是绑定到所有接口。在Rails 4.2中,默认情况下,这更改为仅绑定到127.0.0.1-应用程序日志中没有任何内容,因为套接字根本没有侦听其他网络接口上的连接

    要允许从另一台机器进行连接,您需要使用-b选项绑定到额外的ip地址,例如

    rails s  -b 0.0.0.0
    

    绑定到所有可用的ip地址。当然,您可以将0.0.0.0替换为您机器的一个实际ip地址,尽管当您机器的ip地址更改时,您当然必须更改该调用。

    我们确实在使用rails 4.2,根据您的指示,我们解决了问题+1.
    rails s  -b 0.0.0.0