打开端口3000 EC2amazon web services

我正在尝试使用nodejs和socket.io来提供一个webapp,它在端口3000上使用websocket。

我在我的pipe理控制台中通过将入站TCP规则添加到相关安全组中,在我的EC2实例上打开了端口3000,但仍然无法通过浏览器上的公共dns访问它。

sudo netstat -tulpn不显示为开放端口。

我错过了什么? 有一些我需要重新启动服务或我需要推动让它运行的命令行?

谢谢

sudo netstat -tulpn不显示为开放端口。

netstat命令将显示“some”进程正在监听的所有端口。 所以在这种情况下,正如你所提到的,你应用程序似乎没有在3000端口上监听。

首先,修复你的应用程序,并确保它正在监听端口3000。

而且, netstat与端口是否从防火墙的angular度来看是无关的。 它会告诉你一个给定的端口是否处于LISTENING模式。

按着这些次序:

  1. 确保您的应用程序正在侦听端口3000: netstat -anp | grep 3000 netstat -anp | grep 3000也是telnet 127.0.0.1 3000
  2. 然后确保本地防火墙configuration为允许传入访问端口3000或禁用本地防火墙做一个快速testing( service iptables stop )。 对于Linux,它通常是iptables
  3. 允许在您的AWS安全组中访问3000端口。

请遵循以上3点,并让我们知道,如果你仍然面临同样的问题。

我想你已经使用AWSpipe理控制台进行了更改。 但这仅仅意味着亚马逊的系统将允许通过他们自己的安全系统在端口3000上的消息到您的服务器。

你的EC2服务器(你不会说是Windows还是Linux)可能有自己的防火墙系统,你必须打开端口3000。 您必须查看您的服务器的文档,以了解需要更改的设置。

我假设你已经尝试在你的EC2实例上打开一个浏览器,你可以从那里访问webapp。

另外,侧面思考,如果您的EC2服务器上没有运行其他Web服务器,为什么不更改您的node.js webapp使用端口80?

有类似的问题,但我使用socketio与SSL

 var https = require('https').Server({ key: fs.readFileSync(path.join(__dirname + '../) + 'ssl.key', 'utf8'), cert: fs.readFileSync(path.join(__dirname + '../') + 'ssl.crt', 'utf8') }, app); 

但是密钥是错误的 ,所以即使我的AWS安全已经完成,iptables clear和nginx提供客户端js文件,请求仍然closures。 所以在Firefox中我得到了net :: ERR_CONNECTION_CLOSED,最后发现它可能是SSL失败。

除了上述所有步骤之外,请检查您是否设置了ufw(不复杂的防火墙)。

检查你是否正在运行:

 sudo ufw status 

如果正在运行,只需要执行命令即可

 sudo ufw allow 3000 

这为我解决了这个问题。 我忘记了我已经安装了一段时间,最近又开始使用我的aws实例。