【发布时间】:2014-03-13 03:35:23
【问题描述】:
问题: 我的 rails 应用程序(在我的本地机器上)只响应从同一台机器发送到 localhost、127.0.0.1 或我的内部 IP 地址的请求。当我尝试使用我的互联网 IP 或从我的网络内部或外部的任何其他机器上点击它时,它只是超时。我在 Mac OS 10.9.1、ruby 1.9.3、rails 4.0.0 上。
我已经做了很多搜索,但我只能找到人们没有转发他们的端口或绑定正确的 ip 的问题。
以下是我调查过的领域:
端口 - 我尝试了几个不同的端口。我将路由器配置为转发我尝试过的每个端口,但得到了相同的结果。我想也许路由器有问题,所以我用 Java 构建了一个简单的服务器,并绑定了我与我的 rails 应用程序绑定的所有相同端口。果然,当我使用我的互联网 IP 访问 Java 应用程序时,它工作得很好,所以路由器/防火墙/端口转发不是问题。此外,我在端口 80 上运行了一个 apache 服务器,并且从未出现任何问题。我关闭了 apache 并为我的 rails 应用尝试了端口 80,但这并没有解决问题。
Rails 服务器 - 我从 WEBrick 开始,我想也许里面有一些设置阻止了外部请求。我广泛搜索了谷歌,并没有发现任何关于这件事的信息。为了安全起见,我安装了 Thin 并得到了与 WEBrick 完全相同的结果。一件有趣的事情是,当 Rails 服务器启动时,外部请求需要很长时间才能超时,但服务器控制台根本没有显示任何输出。但是,如果我尝试在不启动服务器的情况下发送相同的请求,它会立即失败。
用户权限 - 我用 root 启动了服务器(我在这里开始只是在黑暗中拍摄),它没有任何效果。
环境 - 我最初是在开发环境中开始的,因为我正在开发,但只是为了好玩,我尝试从生产环境开始,它也没有任何区别。
请帮助我聪明的人
更新: 我在我的 Ubuntu 机器上安装了该应用程序,它没有这个问题!所以这表明问题可能与 Mac OS 有关。
已解决: 事实证明,在 Mac OS 的 System Preferences -> Security & Privacy -> Firewall 中,它以某种方式设置为阻止与 Ruby 1.9.3 的传入连接。我一定是前一段时间不小心设置的。
【问题讨论】:
-
您需要永久解决方案吗?你想用它做什么?
-
是的,永久解决方案会更好。我正在开发一些服务,而其他人正在开发客户端,从任何地方都能看到它肯定会很方便。即使不可能,我也想了解请求被丢弃/忽略的位置。
-
很高兴您解决了您的问题!感谢分享您的解决方案。
标签: ruby-on-rails ruby networking external public