ruby-on-rails - 无法从公共(public) IP 连接到 EC2 上运行的 Rails 服务器

标签 ruby-on-rails amazon-web-services amazon-ec2

我最近遇到了我的 的问题。 AWS EC2 实例。问题是我无法通过公共(public) IP 访问我的 Rails 服务器,但我可以访问 localhost 并且服务器会响应。

这就是我正在做的事情:

  • 创建新的 EC2 实例(t2.micro,ubuntu 免费套餐)
  • 安全组有对所有人开放的端口 22、80、3000 (0.0.0.0)
  • SSH到EC2实例,安装rails(我一直用this安装)
  • 安装后启动 rails server,它在端口 3000
  • 上运行
  • 运行“wget localhost:3000”,它返回 index.html,耶!
  • 转到我的网络浏览器,输入 EC2 实例公共(public) IP 和端口 3000 (IP:3000),说它无法连接:(
  • 杀死 rails 服务器,在端口 80 上重新启动它,wget 工作但无法通过公共(public) IP
  • 连接
  • 作为健全性检查,我安装nginx并运行它,可以通过公网IP在80端口看到nginx启动页面……好糊涂……

  • 所以我认为这与我安装 Rails 的方式有关,但我尝试过使用该安装脚本以外的方法,但遇到了同样的问题……我什至尝试过创建一个全新的 AWS 账户以防万一我搞砸了原始帐户中的设置但没有任何运气。我以前能够让 Rails 在 EC2 实例上运行得很好(事实上,我现在有使用相同安全组的 EC2 实例在我的 AWS 账户上运行,并且可以很好地访问这些公共(public) IP),但现在我只是在敲我的头靠墙...任何帮助将不胜感激!

    编辑:现在,我已经将 nginx 配置为访问我的 Rails 服务器......至少现在可以使用......虽然我仍然很好奇为什么我不能直接访问我的 Rails 服务器......

    最佳答案

    检查 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 Release Notes :

    Due to a change in Rack, rails server now listens on localhost instead of 0.0.0.0 by default. This should have minimal impact on the standard development workflow as both http://127.0.0.1:3000 and http://localhost:3000 will continue to work as before on your own machine.

    关于ruby-on-rails - 无法从公共(public) IP 连接到 EC2 上运行的 Rails 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727798/

    相关文章:

    amazon-web-services - AWS Lambda - 什么是在 CI/CD 管道中对 lambda 进行版本控制和提升的最佳实践

    amazon-web-services - AWS - 监控 VPC 上的传出 DNS 查询

    macos - 亚马逊 EC2 实例

    amazon-web-services - 使用私钥和主机 IP 连接到 AWS EC2 实例

    ruby-on-rails - 我无法在 Windows 7 上安装 ruby​​-debug-base19 -v '0.11.25

    ruby-on-rails - 'merge' :String - Rails 3. 1 的未定义方法 "test"

    ruby-on-rails - Rails&Devise : Failed registration attempt redirects to root url

    ruby-on-rails - rails : Correct routing for namespaced resources

    android - 用于移动应用程序开发的云数据库中生产/开发/测试数据的单独模式

    shell - 对于 shell 脚本中的 cURL,我在服务器上获取 http 代码为 000 或超时