无法连接到Amazon EC2上托管的Node Web服务器

时间:2014-04-23 05:27:41

标签: node.js amazon-web-services amazon-ec2 webserver

我在Amazon EC2上运行节点应用。该应用程序包括一个旨在为索引页面提供服务的简单Web服务器,但它不起作用。

这是服务器代码:

var http = require('http'),
fs = require('fs'),
io = require('socket.io'),
index;

fs.readFile('client.html', function(err, data){
    if (err){
        throw err;
    }
    index = data;
});

var server = http.createServer(function(request, response){
    response.writeHeader(200,{"Content-Type": "text/html"});
    response.write(index);
    response.end();
}).listen(1223);

为EC2分配公共IP地址54.187.31.42。我运行应用程序,打开浏览器,连接到54.187.31.42:1223,希望能够提供网页并且什么也得不到。

  1. 我的服务器代码出了什么问题?

  2. 我使用了this answer中的代码片段来检查运行应用的EC2的IP,奇怪地得到172.31.3.67 - 为什么返回的地址与分配给机器的地址不同亚马逊?

  3. 因此,尝试连接172.31.3.67:1223也会失败。


    直接来自Amazon开发控制,如果这有助于确认服务器IP出现问题或其他问题。

    enter image description here

2 个答案:

答案 0 :(得分:4)

代码看起来很好,尝试连接您在AWS控制台中看到的公共IP /公共DNS。

尝试以下操作,您的应用程序将起作用:

  1. 在您的实例的安全组中打开端口(在您的情况下为1223)。
  2. 停止计算机上的防火墙(即iptables),现在使用公共IP或公共DNS访问您的服务器。
  3. 如果您现在可以加入您的计算机,这意味着iptables中的某些内容正在过滤您的流量。您可以相应地修改iptables规则。

答案 1 :(得分:1)

在安全组中,添加类型为"自定义TCP规则"的规则。在使用的端口上(例如,端口:3000或1223)。它对我有用。