【发布时间】:2015-04-27 23:09:38
【问题描述】:
我最近遇到了我的 AWS EC2 实例的问题。问题是我无法通过公共 IP 访问我的 Rails 服务器,但我可以访问 localhost 并且服务器会响应。
这就是我正在做的事情:
- 创建新的 EC2 实例(t2.micro,ubuntu 免费层)
- 安全组的端口 22、80、3000 对所有人开放 (0.0.0.0)
- SSH到EC2实例,安装rails(我一直用this安装)
- 安装后启动 rails 服务器,它在 3000 端口上运行
- 运行“wget localhost:3000”,它会返回 index.html,耶!
- 进入我的网页浏览器,输入EC2实例公网IP和端口3000(IP:3000),提示无法连接:(
- kill rails 服务器,在 80 端口重启,wget 工作,但无法通过公网 IP 连接
- 作为一个健全性检查,我安装了 nginx 并运行它,并且可以通过公共 IP 在端口 80 上看到 nginx 起始页......好困惑......
所以我认为这与我安装 Rails 的方式有关,但我尝试了使用该安装脚本以外的方法,但遇到了同样的问题......我什至尝试过创建一个完全新的 AWS 账户以防万一我搞砸了我原来账户中的设置但没有任何运气。我以前能够让 Rails 在 EC2 实例上运行得很好(事实上,我现在有使用相同安全组的 EC2 实例在我的 AWS 账户上运行,并且可以很好地访问这些公共 IP),但现在我只是在敲我的头靠墙...任何帮助将不胜感激!
编辑:现在,我已经将 nginx 配置为访问我的 Rails 服务器......至少现在可以使用......虽然我仍然很好奇为什么我不能直接访问我的 Rails 服务器......
【问题讨论】:
-
您可能还需要打开 Ubuntu 的防火墙以允许端口 80 和/或 3000。serverfault.com/questions/574491/opening-port-80-on-ubuntu-aws
-
我运行了
ufw status,它说它处于非活动状态。iptables -L的输出如下:root@ip-172-31-3-171:/home/ubuntu/blah# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:http
标签: ruby-on-rails amazon-web-services amazon-ec2