EC2-没有响应http请求

时间:2012-03-05 17:38:28

标签: http node.js amazon-ec2 firewall

我刚刚在一个带有安全组快速启动和启用了http端口的Windows微实例中安装了我的node.js应用程序。

我在实例中打开了防火墙,并为入站和出站打开了端口80,443。

尽管如此,我的http请求并没有受到node.js应用程序的尊重。 从日志中我看到应用程序已连接到redis和mongo,socket.io也已启动。

怎么了?为什么http请求被阻止?

2 个答案:

答案 0 :(得分:0)

您是否偶然在示例Web服务器之上构建了您的应用程序,如同Node.js主页上当前显示的那样?目前的样本如下:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

您的Node.js服务器可能无法正在侦听正确的端口/主机名组合 - 示例Web服务器侦听端口1337(而不是常规HTTP端口80)和仅侦听本地主机(例如,而不是分配给EC2实例的私有/内部IP 地址)。

如果这些假设适用,您可以通过相应调整listen()声明来实现目标,请参阅我对相关问题Node.js Amazon EC2 example webserver - no result的回答进行扩展讨论,包括有关灵活使用的几个变体server.listen(port, [hostname], [callback])

祝你好运!

答案 1 :(得分:0)

终于找到了问题。

我介绍了log4js并将其与express,as,

集成
app.use(log4js.connectLogger(logger, { level: log4js.levels.ERROR }));

这就产生了问题。不知怎的,这是失败的。看起来它只适用于DEBUG。在评论之后,它开始工作了。奇怪!!