繁体   English   中英

如何使我的ruby on rails应用程序响应外部请求(在Internet上对公众可见)?

[英]How do I make my ruby on rails app respond to external requests (visible to the public on the internet)?

问题:我的Rails应用程序(在本地计算机上)仅响应从同一台计算机发送到本地主机,127.0.0.1或内部IP地址的请求。 当我尝试使用Internet ip或网络内部或外部的任何其他计算机访问它时,它只是超时。 我在Mac OS 10.9.1,ruby 1.9.3,rails 4.0.0上。

我已经做了很多搜索,但是我发现的问题是人们没有转发其端口或绑定正确的IP。

这是我调查过的领域:

端口 -我尝试了几种不同的端口。 我将路由器配置为转发尝试的每个端口,但结果相同。 我以为路由器可能有问题,所以我用Java构建了一个简单的服务器,并绑定了与Rails应用程序绑定的所有相同端口。 果然,当我使用Internet ip访问Java应用程序时,它运行良好,因此路由器/防火墙/端口转发不是问题。 另外,我在端口80上运行了一个apache服务器,它从来没有任何问题。 我关闭了apache,并尝试将80端口用于我的rails应用程序,但这不能解决问题。

Rails Server-我从WEBrick开始,我认为内部可能存在某些设置阻止了外部请求。 我在Google上进行了广泛搜索,但没有发现任何问题。 为了安全起见,我安装了Thin,并获得了与WEBrick完全相同的结果。 一件有趣的事是,当启动rails服务器时,外部请求需要很长时间才能超时,但是服务器控制台根本不显示任何输出。 但是,如果我尝试发送相同的请求而没有启动服务器,它将立即失败。

用户权限 -我是用root 用户启动服务器的(这里我开始只是在黑暗中拍摄),它没有任何作用。

环境 -我最初是在开发环境中开始的,因为我正在开发,但出于娱乐目的,我尝试从生产中开始,这也没有任何区别。

请帮助我聪明的人

更新:我在Ubuntu机器上安装了该应用程序,它没有这个问题! 因此,这表明问题可能与Mac OS有关。

解决:事实证明,在Mac OS中的“系统偏好设置”->“安全性和隐私”->“防火墙”中,已将其设置为阻止与Ruby 1.9.3的传入连接。 我一定是在一段时间前不小心设置了。

问题是您可能正在尝试从本地计算机(或本地网络中任何位于防火墙后的计算机)向公共IP请求页面,以期获得结果……除非您为此设置通过防火墙的路由(并且通常在消费级路由器上不可用... linksys,dlink等)

因此,如果您使用的是pow之类的端口,则将端口80转发给本地计算机,将web Bricks的默认端口转发为3000。

然后让您本地局域网外的某人请求您的外部(公共)IP

这可能是相关的: 在VirtualBox下的Ubuntu 11.10上的Rails 3.1非常慢

您提到的缓慢性以及使用webrick的结合使我认为您正在进行一些反向DNS查找。 快速的第一步是入侵/ etc / hosts以绕过此查找。

我在Ubuntu上处理的情况在短期内通过入侵/ etc / hosts得以解决。 您可以进行此快速修改,以查看是否确实只是webrick的反向DNS查找。 编辑/ etc / hosts并为外部用户的IP地址添加一行,如下所示:

156.123.48.55 TestPerson

用测试仪的IP地址替换IP地址。 由于您说过可以从外部请求访问端口80上的Apache服务器,因此如有必要,您可以从Apache访问日志中获取其IP地址,否则请询问测试人员。

您也可以尝试使用其他Web服务器,例如unicorn ,这可能会有所帮助。 将“ gem unicorn-rails"添加到您的Gemfile中,运行bundle install ,然后(根据他们的文档), rails server将直接使用unicorn。

对于任何本地服务器,您都需要在防火墙上正确配置端口转发。 就像CaptChrisD所说,测试必须由外部IP /浏览器完成(如果您拥有服务器,则在其上使用ssh ,然后通过w3m进行测试)。

我已经有相同的症状(服务器启动=>超时,服务器停止=>失败),并且起源是防火墙配置出现问题。 我认为这是你的问题。

使用MacOS, Pow真是太棒了:安装很容易,不需要任何配置(不需要/etc/hosts …)。 而且,它们为您提供了从外部访问虚拟主机的钩子(但是您仍需要防火墙上的端口转发)。

否则,还有其他解决方案,例如Forward无需防火墙配置(30天免费试用)。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM