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