问题:我的Rails应用程序(我的本地机器上)只响应来自同一台机器发送到本地主机的请求,127.0.0.1,还是我的内部IP地址。 当我尝试使用我的互联网IP或任何其他机器,里面还是我的网络之外打它,它只是超时。 我在Mac OS 10.9.1,红宝石1.9.3,轨4.0.0。
我已经做了很多的搜索,但所有我能找到的问题,人们并没有提出自己的端口或绑定正确的IP地址。
以下是我已经调查区域:
端口 -我已经尝试了几种不同的端口。 我配置我的路由器转发每一个端口我试过,但得到了同样的结果。 我想也许有一个与路由器一个问题,所以我用Java构建一个简单的服务器和绑定的所有我与我的Rails应用程序绑定相同的端口。 果然,当我用我的Internet IP它的工作就好打了Java应用程序,因此路由器/防火墙/端口转发是没有问题的。 另外,我上运行端口80上的Apache服务器,并且从未有过任何问题。 我转过身阿帕奇关闭,并试图端口80用于我的Rails应用程序,但没有解决问题。
Rails的服务器 -我开始与使用WEBrick,我想也许有是阻止外部请求里面的一些设置。 我搜索谷歌广泛,发现这个问题罢了。 为了安全起见我安装的是瘦,得到了我的WEBrick做了完全相同的结果。 一个有趣的事情是,当轨道服务器启动后,外部请求花费很长的时间超时,但服务器控制台显示任何输出。 但是,如果我尝试发送相同的请求瓦特/开始在所有立刻失败的服务器。
用户权限 -我开始用根服务器(我开始只是在黑暗中拍摄在这里)和它没有任何效果。
环境 -我在开发环境中开始最初,因为我正在开发,但只是为了好玩我试着在生产开始,它也没有什么区别。
请帮我聪明的人
更新:我安装的应用程序我的Ubuntu的机器上,它并没有这个问题! 所以,那么就表明该问题可能有一些做与Mac OS。
解决:原来,在系统偏好设置- >安全和隐私- >防火墙在Mac OS中,它在某种程度上设置为阻止到Ruby 1.9.3传入的连接。 我一定是不小心,前一段时间。
问题是,你可能通过你的防火墙,这个试图从本地机器上的页面(或本地网络上的任何一台电脑,你的防火墙后面)请求你的公网IP期待的结果......除非你设定的路线(和通常不提供消费级路由器Linksys的...,DLINK等)上
因此,转发端口80,如果你正在使用的网络砖默认端口像战俘,或3000到本地机器
然后有一个人你的本地局域网请求您的外部(公共)IP外
这可能与: 在Ubuntu 11.10的Rails 3.1 VirtualBox的速度很慢下
您的缓慢与使用的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-rails"
你的Gemfile,运行bundle install
,然后(根据自己的文档), rails server
将只使用麒麟直接。
对于任何本地服务器,则需要在防火墙上正确配置端口转发。 像由CaptChrisD说,测试必须由外部IP /浏览器来完成(如果您有自己的服务器, ssh
就可以了,然后w3m
测试)。
我已经有相同的症状(服务器开始=>超时,服务器停止=>失败)和起源是与防火墙配置的问题。 我认为这是你的问题。
和MacOS, 战俘是真正真棒:安装简单,不需要任何配置(无/etc/hosts
...)。 此外,他们给你一个钩子从外部访问您的virtualhosts (但你仍然需要在你的防火墙端口转发)。
否则,像其他的解决方案转发给做没有防火墙配置(30天免费试用)。
希望这可以帮助!
文章来源: How do I make my ruby on rails app respond to external requests (visible to the public on the internet)?