无法连接到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
期待被服务的网页,什么也没有。
-
我的服务器代码有什么问题?
-
我用这个答案中的代码片断来检查运行应用程序的EC2的IP,奇怪地得到
172.31.3.67
– 为什么返回的地址与Amazon分配给机器的地址不同?
因此,尝试连接到172.31.3.67:1223
也失败。
直接从亚马逊开发控制,如果这有助于确认它不是一个服务器IP被错误或什么的问题。
代码看起来不错,请尝试连接您在AWS控制台中看到的公共IP /公共DNS。
尝试以下,您的应用程序将工作:
- 在你的实例的安全组中打开端口(你的情况1223)。
- 停止你的机器上的防火墙(即iptables),现在使用公共IP或公共DNS访问你的服务器。
如果你现在可以接受你的机器,这意味着在iptables中的东西是过滤你的stream量。 您可以相应地修改iptables规则。
在安全组中,在所使用的端口上添加一个types为“Custom TCP Rule”的规则(例如,对于这种情况,端口为3000或1223)。 这个对我有用。