我有一个Amazon EC2服务器,我配置了节点js服务器,公共dns无法从外部访问它,但可以通过同一个实例(localhost)访问它。任何帮助都感激不尽。
服务器代码:
var my_http = require("http");
my_http.createServer(function(request,response){
console.log("Request Recieved : "+request.url);
response.writeHeader(200, {"Content-Type": "text/plain"});
response.end("Server is UP \n");
}).listen(3000, "0.0.0.0");
console.log("Server is Running on Port 3000");
netstat输出
netstat -tupln | grep :3000
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 11706/node
卷曲输出
curl http://127.0.0.1:3000 => Server is UP
curl http://localhost:3000 => Server is UP
curl http://{PRIVATE_IP}:3000 => Server is UP
curl http://{PUBLIC_DNS}:3000 => curl: (52) Empty reply from server
答案 0 :(得分:2)
这听起来像是一个安全组问题。
在EC2控制面板中,找到您的实例并向右滚动。有一个安全组列,如果您没有更改默认名称,您的安全组将被称为“launch-wizard-1”。
单击它,这将打开一个已过滤的安全组列表(列表中可能只有一个条目)。
右键单击它并选择编辑入站规则。
添加一条说明:
的规则Type: HTTP
Protocol: TCP
Port Range: 3000
Source: Anywwhere
保存,它应该可以工作。