我正在为自己的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/');
答案 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访问服务器。
单击“保存”,然后您将能够使用http://IP:3000访问服务器。
答案 1 :(得分:0)
如果您.listen(3000, "127.0.0.1");
在127.0.0.1
上收听,则仅允许local
机器访问服务器。您需要.listen(3000, "0.0.0.0");
才能允许任何IP地址访问服务器。