【问题标题】:EC2- non responding http requestsEC2- 无响应的 http 请求
【发布时间】:2012-03-06 12:10:58
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: http node.js amazon-ec2 firewall


    【解决方案1】:

    您是否偶然在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 服务器都可能根本没有在正确的端口/主机名组合上进行侦听 - Webserver 示例 仅在 1337 端口(而不是常规的 HTTP 端口 80)和 localhost 上进行侦听(而不是分配给您的 EC2 实例的 私有/内部 IP 地址)。

    如果这些假设适用,您可以通过相应地调整listen() 语句来实现您的目标,请参阅我对相关问题Node.js Amazon EC2 example webserver - no result 的回答以进行扩展讨论,包括关于灵活使用@987654323 的一些变化@。

    祝你好运!

    【讨论】:

    • 您可以尝试的其他方法是暂时打开 0.0.0.0/0 的所有端口,看看是安全组有问题还是实例有问题。
    • @Steffen,我的应用基于 express,它只监听端口 80。我在我的机器上本地测试了它,它工作得很好。但不知道为什么它在 EC2 中不起作用
    • @bwight,我还为 0.0.0.0/0 打开了所有 TCP 端口。它仍然没有响应。我认为这可能与 Windows 2008 防火墙设置有关。最初 ping 不起作用,当我更改防火墙中的某些设置时,ping 开始工作。不知道 HTTP 有什么问题?
    【解决方案2】:

    终于找到问题了。

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

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

    这造成了问题。不知何故,这失败了。看起来它只适用于调试。对此发表评论后,它开始工作。奇怪!!

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 2017-05-12
      • 2012-08-30
      • 2021-08-28
      • 2020-11-17
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多