Can';t浏览到AWS Ubuntu EC2实例

Can';t浏览到AWS Ubuntu EC2实例,ubuntu,curl,amazon-web-services,amazon-ec2,Ubuntu,Curl,Amazon Web Services,Amazon Ec2,当我使用公共DNS值浏览EC2实例时,它不会响应 作为测试,我尝试在ssh插入EC2实例后从EC2实例中使用curl。这是成功的。然后,我尝试使用相同的公共DNS值在EC2实例外部使用curl。它超时了,就像浏览器一样 详情如下 当我调用: “卷曲” 从ssh外壳到Ubuntu EC2实例,它返回: <!DOCTYPE html> <html> <body> <h1>Ubuntu EC2 instance</h1> &l

当我使用公共DNS值浏览EC2实例时,它不会响应

作为测试,我尝试在ssh插入EC2实例后从EC2实例中使用curl。这是成功的。然后,我尝试使用相同的公共DNS值在EC2实例外部使用curl。它超时了,就像浏览器一样

详情如下

当我调用: “卷曲” 从ssh外壳到Ubuntu EC2实例,它返回:

<!DOCTYPE html>
<html>
  <body>
    <h1>Ubuntu EC2 instance</h1>
  </body>
</html>

浏览到此EC2实例是否需要启用其他功能?

因此,我建议回到基础:

  • 创建允许端口80和8080从0.0.0.0/0进入的安全组
  • 从股票Amazon Ubuntu AMI启动一个新的EC2实例,使用公共IP和前面提到的安全组
  • 在实例上安装node.js
  • 在实例上保存下面的基本节点服务器代码(helloworld.js)
  • 通过node helloworld.js运行节点服务器代码
  • 测试它是否在端口8080上通过
  • 通过sudo iptables-t nat-A PREROUTING-p tcp-dport 80-j redirect将端口80重定向到8080端口
  • 使用
  • 从安全组中删除端口8080
  • 测试它是否在端口80上通过
框架helloworld.js服务器代码为:

var http = require("http");
var server = http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text"});
    response.write("Hello world!");
    response.end();
});

server.listen(8080);
console.log("Server is listening on port 8080");

在这两种情况下访问ec2-54-148-214-212.us-west-2.compute.amazonaws.com的主要区别在于,在AWS网络外部,该名称将解析为公共IP,如54.x.y.z,但在AWS网络内部,它将解析为专用IP,如10.a.b.c。如果您从笔记本电脑中ping或挖掘名称,然后从EC2实例中,您可以看到这一点。您的安全组规则看起来不错,只要所讨论的EC2实例实际上是随它一起启动的,但请注意,它与实例本身的curl无关。我遇到的主要问题是无法浏览到我的EC2实例。我只使用curl来演示从EC2实例外部浏览索引文件是不可能的。如何修复它以便浏览html文件?如果安全组完全打开(所有流量),是否可以卷曲?再次检查主机名是否仍然是ec2-54-148-214-212.us-west-2.compute.amazonaws.com。@jarmod我刚刚检查过,是的,这仍然是公共dns值。我还使用了curl的IP地址,这应该也可以,但是挂起和超时和以前一样。谢谢@jarmod,这对我很有用。谢谢你的帮助。@tgoneil很高兴这对你有帮助。祝你的项目好运。
var http = require("http");
var server = http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text"});
    response.write("Hello world!");
    response.end();
});

server.listen(8080);
console.log("Server is listening on port 8080");