我刚刚安装我的node.js应用程序在安全组快速启动并启用http端口的Windows微型实例。EC2-无响应的http请求
我在实例中打开了防火墙,并打开了入站和出站端口80,443。
尽管如此,我的http请求没有被node.js应用程序所支持。 从日志中我看到该应用程序已连接到redis和mongo,并且socket.io也已启动。
怎么了?为什么http请求被阻止?
我刚刚安装我的node.js应用程序在安全组快速启动并启用http端口的Windows微型实例。EC2-无响应的http请求
我在实例中打开了防火墙,并打开了入站和出站端口80,443。
尽管如此,我的http请求没有被node.js应用程序所支持。 从日志中我看到该应用程序已连接到redis和mongo,并且socket.io也已启动。
怎么了?为什么http请求被阻止?
终于发现问题了。
我介绍log4js和综合这与快递,如,
app.use(log4js.connectLogger(logger, { level: log4js.levels.ERROR }));
这造成的问题。不知何故,这是失败的。看起来它只适用于DEBUG。在评论这个之后,它开始工作。奇怪!
您是否有机会在之上构建您的应用程序示例网络服务器目前也在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])的一对夫妇的变化。
祝你好运!
您可以尝试的其他方法是暂时打开0.0.0.0/0的所有端口,以查看问题是否存在于安全组中,或者存在实例问题。 – bwight 2012-03-05 23:01:44
@Steffen,我的应用程序基于express,仅在端口80上侦听。我在我的机器上进行了本地测试,它工作得很好。但是不知道为什么它不在EC2 – user644745 2012-03-06 02:41:30
@bwight中工作,我也打开了所有TCP端口为0.0.0.0/0。它仍然没有回应。我认为这可能与Windows 2008防火墙设置有关。最初ping不工作,当我在防火墙中更改了一些设置时,ping开始工作。不知道HTTP有什么问题? – user644745 2012-03-06 02:43:03