我正在 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
,希望获得一个网页,但什么也没得到。
我的服务器代码有什么问题?
我使用了 this answer 中找到的代码片段检查运行应用程序的 EC2 的 IP,并奇怪地得到 172.31.3.67
- 为什么返回的地址与 Amazon 分配给机器的地址不同?
因此,尝试连接到 172.31.3.67:1223
也会失败。
<小时/>
直接来自亚马逊开发控件,如果这有助于确认这不是服务器 IP 错误或其他问题。
代码看起来不错,请尝试连接您在 AWS 控制台中看到的公共(public) IP/公共(public) DNS。
尝试以下操作,您的应用程序将会正常运行:
- 在实例的安全组中打开端口(在本例中为 1223)。
- 停止您计算机上的防火墙(即 iptables),然后使用公共(public) IP 或公共(public) DNS 访问您的服务器。
如果您现在可以访问您的计算机,则意味着 iptables 中的某些内容正在过滤您的流量。您可以相应地修改 iptables 规则。
我是一名优秀的程序员,十分优秀!