首页 > 解决方案 > 无法访问 EC2 实例上托管的简单节点 Web 服务器

问题描述

无法访问托管在 AWS 中的 ubuntu EC2 上的简单节点 Web 服务器。但我看不到我错过了什么!我在 AWS 中提供了以下屏幕截图 - 我错过了什么?请帮忙!。非常感谢,

节点代码

const http = require('http');

const hostname = '127.0.0.1';
const port = 8080;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

命令提示符

$ node index.js 

命令提示响应

Server running at http://127.0.0.1:8080/

EC2 实例

ec2 设置

安全设定

安全设定

弹性 IP 设置

在此处输入图像描述

浏览器

http://"Public DNS (IPv4) value":8080/ 

更新

在此处输入图像描述

标签: amazon-ec2aws-security-group

解决方案


选择类型时,选择“自定义 TCP 规则”:

端口规则

并在端口范围字段中输入 8080。

编辑

然而,这只能让你部分获得成功。如果您注意到,您的服务器正在侦听 IP 地址127.0.0.1。这意味着它不听外面的世界,只听外面的世界localhost。要在服务器计算机之外访问它,您需要将代码更改为:

const http = require('http');

const hostname = '0.0.0.0';
const port = 8080;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

变化是您现在正在“所有接口”上收听,而不仅仅是 localhost。


推荐阅读