【发布时间】:2015-06-01 16:29:00
【问题描述】:
我试图在朋友家中运行 ror 应用程序,但无法从外部访问该应用程序。这是我们尝试过的。
应用程序已创建
$ rails new <application name>
并开始于
$ rails server
开发服务器启动并可以在http://localhost:3000访问
接下来我们在他用来连接互联网的路由器上激活了端口转发:我们已将外部端口 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 服务器都可以访问
- Rails 服务器无法从外部访问端口 80 和 3000
我唯一能想到的是,rails 可能具有类似于 Django 的 ALLOWED_HOSTS 的机制,并且它拒绝外部请求,因为它们用于与 localhost 不同的主机。但是,我还没有找到关于这个主题的任何内容。此外,应用程序的日志文件不会显示任何被 rails 服务器拒绝的连接尝试。
所以我们没有想法。接下来我们应该检查什么?
【问题讨论】:
标签: ruby-on-rails ruby firewall