Gio*_*gio 2 ruby firewall ruby-on-rails
我正在尝试在朋友家中运行ror应用程序,并且无法从外部访问应用程序.这是我们尝试过的.
该应用程序已创建
$ rails new <application name>
Run Code Online (Sandbox Code Playgroud)
并开始
$ rails server
Run Code Online (Sandbox Code Playgroud)
开发服务器启动并可在http:// localhost:3000上访问
接下来,我们在用于连接到互联网的路由器上激活了端口转发:我们已将外部端口3000映射到运行rails服务器的内部主机上的端口3000.当我尝试从外部打开页面(使用firefox)时,我收到一个错误页面:无法连接到主机,主机可能已关闭,请稍后尝试连接.
我们尝试过的事情:
我还检查了运行rails服务器的机器的防火墙.操作系统是ubuntu 12.04:防火墙(至少是ufw)未激活.我也可以使用端口22/ssh连接到该机器.
总结:
我唯一能想到的是rails可能有一个类似于Django的ALLOWED_HOSTS的机制,它拒绝外部请求,因为它们用于与localhost不同的主机.但是,我还没有找到关于这个主题的任何内容.此外,应用程序的日志文件不会显示rails服务器拒绝的任何连接尝试.
所以我们没有想法.接下来应该检查什么?
Fre*_*ung 10
在Rails 4.2之前,默认rails server是绑定到所有接口.在Rails 4.2中,默认情况下更改为仅绑定到127.0.0.1 - 应用程序日志中没有任何内容,因为套接字根本不在其他网络接口上侦听连接.
要允许来自另一台计算机的连接,您需要使用-b选项绑定到额外的IP地址,例如
rails s -b 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
绑定到所有可用的IP地址.您当然可以用机器的一个实际IP地址替换0.0.0.0,但是当您的机器的IP地址发生变化时,您当然必须更改该调用.