node.js - 无法连接到 Amazon EC2 上托管的 Node Web 服务器

标签 node.js amazon-web-services amazon-ec2 webserver

我正在 Amazon EC2 上运行 Node 应用程序。该应用程序包含一个简单的网络服务器,旨在为索引页提供服务,但它不起作用。

这是服务器代码:

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 被分配公共(public) IP 地址 54.187.31.42。我运行该应用程序,打开浏览器,连接到 54.187.31.42:1223,希望获得一个网页,但什么也没得到。

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

  2. 我使用了 this answer 中找到的代码片段检查运行应用程序的 EC2 的 IP,并奇怪地得到 172.31.3.67 - 为什么返回的地址与 Amazon 分配给机器的地址不同?

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

<小时/>

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

enter image description here

最佳答案

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

尝试以下操作,您的应用程序将会正常运行:

  1. 在实例的安全组中打开端口(在本例中为 1223)。
  2. 停止您计算机上的防火墙(即 iptables),然后使用公共(public) IP 或公共(public) DNS 访问您的服务器。

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

关于node.js - 无法连接到 Amazon EC2 上托管的 Node Web 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23235466/

相关文章:

java - 使用库运行 AWS lambda 函数时出现 NoClassDefFoundError

amazon-web-services - AWS key 对更换

javascript - 初始化一个数据库时,mongodb Node.js中的remove()和save()是什么意思

amazon-web-services - 资源之间的循环依赖: CognitoUserPool and environment

node.js - ApiAxle 返回空结果

amazon-web-services - 验证 Google Domains 中的 AWS 证书

mysql - Amazon RDS Mysql max_used_connections 只有 3

java - 是否可以在AWS EC2中从python运行java命令行应用程序?

javascript - Node.js 中的异步函数

node.js - Firebase 云功能 Firestore 触发器 onWrite 在本地测试时未按预期运行