在本地主机之外的AWS Lightsail中访问NodeJS演示应用程序

时间:2019-09-13 22:07:32

标签: node.js amazon-lightsail

我正在为自己的NodeJS实验之一驾驶AWS Lightsail进行测试。在服务器上使用SSH安装了NodeJS,并运行了一个演示程序(请参见下文)。我可以使用命令“ curl localhost:3000”从SSH终端看到输出“ Hello World”。但是,当我使用家用IP地址和端口号3000的家用PC在Web上通过网络浏览器从网络外部访问它时,它表示“无法访问此站点”,我已经转发了服务器上的端口3000一侧。

我想念什么吗?

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3000/');

2 个答案:

答案 0 :(得分:1)

如果在调用.listen时使用不指定主​​机,则服务器将在包括0.0.0.0在内的所有接口上运行。但是您正在运行服务器以仅在localhost上侦听。像这样更改.listen

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(3000);

您还必须添加入站流量规则(防火墙)以打开端口3000,以使服务器在端口3000上运行时可以通过Internet访问服务器。

  1. 单击实例,然后选择联网选项
  2. 转到防火墙部分,然后单击“添加另一个”,如下图所示 enter image description here

  3. 单击“保存”,然后您将能够使用http://IP:3000访问服务器。

  4. 如果要访问服务器而未在URL中指定端口,则必须配置“ Nginx反向代理”。另外,应允许80(for http)端口和443(https)端口通过防火墙。

答案 1 :(得分:0)

如果您.listen(3000, "127.0.0.1");127.0.0.1上收听,则仅允许local机器访问服务器。您需要.listen(3000, "0.0.0.0");才能允许任何IP地址访问服务器。