无法连接到在公共IP上运行在EC2上的Rails服务器

我最近在使用AWS EC2实例时遇到问题。 问题是我无法通过公共IP打我的Rails服务器,但我可以打本地主机,服务器会回应。

以下是我正在做的事情:

  • 创建新的EC2实例(t2.micro,ubuntu免费层)
  • 安全组拥有对所有人开放的端口22,80,300(0.0.0.0)
  • SSH到EC2实例,安装rails(我一直在使用它来安装)
  • 在安装后启动rails server,它在端口3000上运行
  • 运行“wget localhost:3000”,它返回index.html,耶!
  • 去我的网络浏览器,输入EC2实例公共IP和端口3000(IP:3000),说它不能连接:(
  • kill rails服务器,在端口80重新启动它,wget工作,但无法通过公共IP连接
  • 作为一个完整的检查, 我安装nginx并运行它,并可以通过公共IP在端口80上看到nginx的启动页面 ......所以很困惑......
  • 所以我认为它与我如何安装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

    下一篇: EC2 instance has no public DNS