2017-10-07 177 views
-1

我是亚马逊EC2的新手,所以请原谅我,如果我问一个愚蠢的问题。我使用“Amazon Linux AMI”创建了一个实例,并在其中安装了NodeJS。亚马逊EC2实例无法建立HTTP连接

我添加了从转发端口80上的所有请求下面的IP表项为3000

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000 

,我创建了一个Hello World脚本来测试此安装。

var http = require("http"); 

http.createServer(function (request, response) { 
    // Send the HTTP header 
    // HTTP Status: 200 : OK 
    // Content Type: text/plain 
    response.writeHead(200, {'Content-Type': 'text/plain'}); 

    // Send the response body as "Hello World" 
    response.end('Hello World\n'); 
}).listen(3000); 

// Console will print the message 
console.log('Server running at http://127.0.0.1:3000/'); 

这里的问题是,当我尝试ping到我的命令行例如,请求超时

ping ec2-52-26-59-26.us-west-2.compute.amazonaws.com 

PING ec2-52-26-59-26.us-west-2.compute.amazonaws.com (52.26.59.26): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2 

我怎样才能解决这个问题?

+1

您是否检查安全组3000端口是否打开? – Ashan

+0

我没有添加任何安全规则到目前为止,如果我需要添加?你能告诉我需要在那里添加什么吗? – Unnikrishnan

+0

默认安全规则严重限制开放端口。请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html – Carey

回答

2

您需要更新EC2实例的安全组允许:

protocol: TCP, port: 3000, source: My IP

或者你可以,如果你想打开它的每个人都在互联网上的源更改为无处不在。

+0

它工作正常,我配置了cloudfront HTTPS访问。当我使用cloudfront url randomtext.cloudfront.net进行访问时显示HTTPS,但是当我尝试访问使用我在“替代域名”中给出的域名时,它仅在HTTP连接中显示。我如何使它成为HTTPS? – Unnikrishnan

+0

看看这个:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-alternate-domain-names.html ...我建议你开始一个新的问题,如果你无法找到一个答案在此链接或以前的StackOverflow问题:) – mostafazh

+0

我无法让它工作?我想在我的域名中使用HTTPS,我应该怎么做? – Unnikrishnan