无法连接到在公共IP上运行在EC2上的Rails服务器
我最近在使用AWS EC2实例时遇到问题。 问题是我无法通过公共IP打我的Rails服务器,但我可以打本地主机,服务器会回应。
以下是我正在做的事情:
所以我认为它与我如何安装Rails有关,但我尝试过的方法不是使用该安装脚本,而是遇到同样的问题......我甚至尝试过创建一个全新的AWS账户以防万一我搞砸了我的原始帐户的设置,但没有任何运气。 我之前已经能够获得在EC2实例上运行的rails(事实上,我的EC2实例使用的是我的AWS账户上运行的相同安全组,现在可以击中这些公有IP了),但现在我只是在敲我的脑袋靠墙...任何帮助将不胜感激!
编辑:现在,我已经配置nginx打我的轨道服务器....至少现在工作...虽然我仍然好奇,为什么我不能直接打我的轨道服务器...
检查rails是否在0.0.0.0或127.0.0.1上侦听,默认是只侦听localhost。
-b, --binding=IP Binds Rails to the specified IP.
Default: localhost
从Ruby on Rails 4.2发行说明:
由于Rack的变化,rails server现在默认监听localhost,而不是0.0.0.0。 这应该对标准开发工作流程产生最小的影响,因为http://127.0.0.1:3000和http:// localhost:3000将继续像以前一样在自己的机器上工作。
如果您使用的是'rails server'并且想要使用默认端口3000,那么请使用以下内容:
sudo rails server -b 0.0.0.0
它可以被访问为http://[public_ip]:3000
。
如果您想将其用作不带端口的URL,请使用以下命令运行服务器:
sudo rails server -p 80 -b 0.0.0.0
您只需以http://[public_ip]
身份访问它。
我在我的AWS Ubuntu实例的默认端口3000上运行rails服务器,并已在安全组,入站部分中允许此端口,但仍无法通过此访问我的应用程序。
HTTP:// public_ip:3000
我搜索了很多,这个答案帮助了我。 解释答案。 我们必须使防火墙设置更灵活,以便我们的防火墙允许端口3000。
您可以使用此命令检查防火墙上是否允许此端口。
$ sudo iptables -L | grep :3000
如果你什么都看不到,这意味着我们必须使用这个命令来允许它。
$ sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
这对我来说,让我的端口3000应用程序访问我的Rails应用程序。
链接地址: http://www.djcxy.com/p/32443.html上一篇: Can't connect to Rails server running on EC2 from public IP