无法连接到Amazon EC2上托pipe的节点networking服务器

我正在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. 我用这个答案中的代码片断来检查运行应用程序的EC2的IP,奇怪地得到172.31.3.67 – 为什么返回的地址与Amazon分配给机器的地址不同?

因此,尝试连接到172.31.3.67:1223也失败。


直接从亚马逊开发控制,如果这有助于确认它不是一个服务器IP被错误或什么的问题。

在这里输入图像说明

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

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

  1. 在你的实例的安全组中打开端口(你的情况1223)。
  2. 停止你的机器上的防火墙(即iptables),现在使用公共IP或公共DNS访问你的服务器。

如果你现在可以接受你的机器,这意味着在iptables中的东西是过滤你的stream量。 您可以相应地修改iptables规则。

在安全组中,在所使用的端口上添加一个types为“Custom TCP Rule”的规则(例如,对于这种情况,端口为3000或1223)。 这个对我有用。