您在哪里配置允许连接到Rails应用程序的IP地址?
我有一个简单的rails应用程序,我继承了它在Ubuntu 14.04上的开发环境中运行。
直到最近,当一些更改从git合并时才工作正常。现在,当我运行rails s
时,应用程序似乎开始像服务器一样瘦,正如预期的那样。
=> Booting Thin
=> Rails 4.2.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on localhost:3000, CTRL+C to stop
netstat显示rails实际上正在按预期收听
tcp 0 0 localhost:3000 *:* LISTEN
我可以使用127.0.0.1:3000
从服务器上的浏览器访问网站,所有内容似乎都可以正常工作。我无法从任何其他计算机访问它,因为返回连接已拒绝状态,因为rails仅允许端口3000上的localhost。
如果我使用thin start
从命令行启动Thin,则返回类似的设置
>> Using rack adapter
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop
但是这次Thin正在侦听来自任何IP的连接,我可以从另一台机器到达该站点。虽然两者都是版本1.5.1,但在自己启动Thin和从rails启动Thin之间的行为有所不同。 Rails配置中的某些内容限制Thin只侦听来自localhost的连接。
据我所知,我拥有所有最新的宝石。我认为这个问题可能与eventmachine有关,但我找不到任何东西。
任何建议表示赞赏。
答案 0 :(得分:4)
0.0.0.0:3000是绑定到所有接口的别名。 Localhost实际上只是本地主机127.0.0.1,无法从外部访问。
使用rails 4我相信他们改变了rails的嘲讽行为,因此服务器不再监听外部接口。你可以使用
rails s -b 0.0.0.0
这会将其绑定到0.0.0.0(所有接口),就像您手动启动瘦身一样。
答案 1 :(得分:0)
当您尝试仅在同一网络中从其他设备访问您的应用时,您需要允许端口3000
的传入流量。查看ubuntu上的Allowing Incoming Traffic on Specific Ports文档
答案 2 :(得分:0)
启动服务器时,通过将rails应用程序绑定到特定IP来指定运行rails应用程序的ip。这可以使用-b选项完成。例如,如果您的IP是192.168.1.69
rails server -b 192.168.1.69 -p 3000
答案 3 :(得分:0)
感谢勘误表
这清楚地解释了,现在我有关键字“绑定”,我可以看到之前已经问过这个问题。在配置文件中设置绑定会很有帮助,但似乎这是不可能的。我将尝试为rails s命令设置别名并使用它。
仅供参考,由于底层机架库发生了变化,根据该版本的发行说明,在版本4.2的rails中进行了更改。