我在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
,希望能够提供网页并且什么也得不到。
我的服务器代码出了什么问题?
我使用了this answer中的代码片段来检查运行应用的EC2的IP,奇怪地得到172.31.3.67
- 为什么返回的地址与分配给机器的地址不同亚马逊?
因此,尝试连接172.31.3.67:1223
也会失败。
直接来自Amazon开发控制,如果这有助于确认服务器IP出现问题或其他问题。
答案 0 :(得分:4)
代码看起来很好,尝试连接您在AWS控制台中看到的公共IP /公共DNS。
尝试以下操作,您的应用程序将起作用:
如果您现在可以加入您的计算机,这意味着iptables中的某些内容正在过滤您的流量。您可以相应地修改iptables规则。
答案 1 :(得分:1)
在安全组中,添加类型为"自定义TCP规则"的规则。在使用的端口上(例如,端口:3000或1223)。它对我有用。