无法连接到托管在 Amazon EC2 上的 Node Web 服务器

1 webserver amazon-ec2 amazon-web-services node.js

我正在 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);
Run Code Online (Sandbox Code Playgroud)

EC2 被分配了公共 IP 地址54.187.31.42。我运行该应用程序,打开我的浏览器,连接到54.187.31.42:1223期望提供一个网页,但什么也得不到。

  1. 我的服务器代码有什么问题?

  2. 我使用在这个答案中找到的片段来检查运行该应用程序的 EC2 的 IP,并奇怪地得到172.31.3.67- 为什么返回的地址与亚马逊分配给机器的地址不同?

因此,尝试连接172.31.3.67:1223也失败。


直接来自亚马逊开发控件,如果这有助于确认这不是服务器 IP 错误或其他问题。

在此处输入图片说明

ary*_*ann 5

代码看起来不错,尝试连接您在 AWS 控制台中看到的公共 IP/公共 DNS。

尝试以下操作,您的应用程序将起作用:

  1. 在您的实例的安全组中打开端口(在您的情况下为 1223)。
  2. 停止您机器上的防火墙(即 iptables),现在使用公共 ip 或公共 DNS 访问您的服务器。

如果您现在可以访问您的机器,则意味着 iptables 中的某些内容正在过滤您的流量。您可以相应地修改 iptables 规则。

  • 允许端口号 1223 上的“自定义 tcp”流量,仅此而已。它也应该工作。 (2认同)