NodeJS 正在打开端口3000 EC2 Amazon Web服务

r3i60tvu  于 2022-11-04  发布在  Node.js
关注(0)|答案(7)|浏览(140)

我正在尝试使用nodejs和socket.io来交付一个Web应用程序,该应用程序在端口3000上使用WebSocket。
我已经通过将入站TCP规则添加到相关的安全组,在管理控制台中打开了EC2示例上的端口3000,但是我仍然无法通过浏览器上的公共dns访问它。
sudo netstat -tulpn不会将其显示为打开的端口。
我错过了什么?是否有一些服务我需要重新启动或命令行我需要推让它运行?
谢谢

djp7away

djp7away1#

sudo netstat -tulpn不会将其显示为打开的端口。
netstat命令会显示所有被“某个”进程监听的端口。所以在这个例子中,正如你所提到的,你的应用程序似乎没有监听端口3000。
首先,修复您的应用程序,并确保它侦听端口3000。
另外,从防火墙的Angular 来看,netstat与端口是否打开/关闭无关。它会告诉你某个给定的端口是否通过某个进程处于LISTENING模式。
请执行下列步骤:
1.确保您的应用程序正在侦听端口3000:netstat -anp | grep 3000也是telnet 127.0.0.1 3000
1.然后,确保本地防火墙配置为允许对端口3000的传入访问,或者禁用本地防火墙以进行快速测试(service iptables stop)。对于Linux,通常为iptables
1.允许对AWS安全组中的端口3000进行传入访问。
请遵循上述3点,并让我们知道,如果你仍然面临同样的问题。

xdnvmnnf

xdnvmnnf2#

除了上面的所有步骤,检查你是否有ufw(简单的防火墙)设置.
要检查您是否有正在运行的ufw,请执行以下操作:

sudo ufw status

如果正在运行,只需执行以下命令即可允许端口3000

sudo ufw allow 3000

这为我解决了这个问题。我忘记了前阵子我已经安装了UFW,最近又开始使用我的AWS示例了。

tgabmvqs

tgabmvqs3#

我猜你是用AWS管理控制台做的修改,但这只是意味着Amazon的系统将允许消息通过他们自己的安全系统在端口3000上到达你的服务器。
您的EC2服务器(您没有说它是Windows还是Linux)可能有自己的防火墙系统,您必须打开端口3000。您必须查看您的服务器的文档,了解需要更改的设置。
我假设您已经尝试在EC2示例上打开浏览器,并且可以从那里访问Web应用程序。
另外,从侧面考虑,如果EC2服务器上没有运行其他Web服务器,为什么不将node.jswebapp更改为使用端口80呢?

kq4fsx7k

kq4fsx7k4#

有类似的问题,但我使用的是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清除,nginx提供客户端js文件,请求仍然关闭。所以在Firefox中,我得到了net::ERR_CONNECTION_CLOSED,最后发现可能是SSL故障。

mf98qq94

mf98qq945#

我希望这对某些人有帮助。我曾经遵循过一个在线教程,上面说我应该为3000 TCP添加一个安全规则,并链接回source中的安全组标识符。
这是错误的。删除这行,只为IPv4和IPv6的端口3000设置两个自定义TCP。这就为我解决了这个问题。

wlsrxk51

wlsrxk516#

让我把我的几分钱在这里。
通过将3000端口添加到具有IPv4和IPv6的Secure groups,并将nuxt.config.js中的host设置为“0.0.0.0”,解决了此问题。此值使Nuxt自动查找“真实的的”IP侦听。

gg58donl

gg58donl7#

以下是我解决该问题的方法:

  • 转到EC2示例页面
  • 在“Security”(安全)选项卡中,单击与示例关联的安全组链接

  • 在“操作”菜单中,单击“编辑入站规则”
  • 添加具有自定义tcp的规则

相关问题