无法从 public IP 连接到 EC2 上的 Rails 服务器 运行

Can't connect to Rails server running on EC2 from public IP

我最近遇到了 AWS EC2 实例的问题。问题是我无法通过 public IP 访问我的 Rails 服务器,但我可以访问本地主机并且服务器会响应。

这是我正在做的事情:

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

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

检查 rails 是否在 0.0.0.0 或 127.0.0.1 上侦听,默认仅在本地主机上侦听。

-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.

如果您正在使用 '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

我搜索了很多,这个 answer 对我有帮助。解释答案。我们必须使防火墙设置灵活,以便我们的防火墙允许端口 3000。

您可以使用此命令检查防火墙是否允许此端口。

$ sudo iptables -L | grep :3000

如果您什么也没看到,则意味着我们必须使用此命令允许它。

$ sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT

这让我的 rails 应用程序可以访问端口 3000。