我正在尝试使用nodejs和socket.io来交付一个Web应用程序,该应用程序在端口3000上使用WebSocket。我已经通过将入站TCP规则添加到相关的安全组,在管理控制台中打开了EC2示例上的端口3000,但是我仍然无法通过浏览器上的公共dns访问它。sudo netstat -tulpn不会将其显示为打开的端口。我错过了什么?是否有一些服务我需要重新启动或命令行我需要推让它运行?谢谢
djp7away1#
sudo netstat -tulpn不会将其显示为打开的端口。netstat命令会显示所有被“某个”进程监听的端口。所以在这个例子中,正如你所提到的,你的应用程序似乎没有监听端口3000。首先,修复您的应用程序,并确保它侦听端口3000。另外,从防火墙的Angular 来看,netstat与端口是否打开/关闭无关。它会告诉你某个给定的端口是否通过某个进程处于LISTENING模式。请执行下列步骤:1.确保您的应用程序正在侦听端口3000:netstat -anp | grep 3000也是telnet 127.0.0.1 30001.然后,确保本地防火墙配置为允许对端口3000的传入访问,或者禁用本地防火墙以进行快速测试(service iptables stop)。对于Linux,通常为iptables1.允许对AWS安全组中的端口3000进行传入访问。请遵循上述3点,并让我们知道,如果你仍然面临同样的问题。
netstat
LISTENING
netstat -anp | grep 3000
telnet 127.0.0.1 3000
service iptables stop
iptables
xdnvmnnf2#
除了上面的所有步骤,检查你是否有ufw(简单的防火墙)设置.要检查您是否有正在运行的ufw,请执行以下操作:
sudo ufw status
如果正在运行,只需执行以下命令即可允许端口3000
sudo ufw allow 3000
这为我解决了这个问题。我忘记了前阵子我已经安装了UFW,最近又开始使用我的AWS示例了。
tgabmvqs3#
我猜你是用AWS管理控制台做的修改,但这只是意味着Amazon的系统将允许消息通过他们自己的安全系统在端口3000上到达你的服务器。您的EC2服务器(您没有说它是Windows还是Linux)可能有自己的防火墙系统,您必须打开端口3000。您必须查看您的服务器的文档,了解需要更改的设置。我假设您已经尝试在EC2示例上打开浏览器,并且可以从那里访问Web应用程序。另外,从侧面考虑,如果EC2服务器上没有运行其他Web服务器,为什么不将node.jswebapp更改为使用端口80呢?
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故障。
mf98qq945#
我希望这对某些人有帮助。我曾经遵循过一个在线教程,上面说我应该为3000 TCP添加一个安全规则,并链接回source中的安全组标识符。这是错误的。删除这行,只为IPv4和IPv6的端口3000设置两个自定义TCP。这就为我解决了这个问题。
source
wlsrxk516#
让我把我的几分钱在这里。通过将3000端口添加到具有IPv4和IPv6的Secure groups,并将nuxt.config.js中的host设置为“0.0.0.0”,解决了此问题。此值使Nuxt自动查找“真实的的”IP侦听。
Secure groups
nuxt.config.js
host
gg58donl7#
以下是我解决该问题的方法:
7条答案
按热度按时间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点,并让我们知道,如果你仍然面临同样的问题。
xdnvmnnf2#
除了上面的所有步骤,检查你是否有ufw(简单的防火墙)设置.
要检查您是否有正在运行的ufw,请执行以下操作:
如果正在运行,只需执行以下命令即可允许端口3000
这为我解决了这个问题。我忘记了前阵子我已经安装了UFW,最近又开始使用我的AWS示例了。
tgabmvqs3#
我猜你是用AWS管理控制台做的修改,但这只是意味着Amazon的系统将允许消息通过他们自己的安全系统在端口3000上到达你的服务器。
您的EC2服务器(您没有说它是Windows还是Linux)可能有自己的防火墙系统,您必须打开端口3000。您必须查看您的服务器的文档,了解需要更改的设置。
我假设您已经尝试在EC2示例上打开浏览器,并且可以从那里访问Web应用程序。
另外,从侧面考虑,如果EC2服务器上没有运行其他Web服务器,为什么不将node.jswebapp更改为使用端口80呢?
kq4fsx7k4#
有类似的问题,但我使用的是socketio与SSL
但是密钥是错误的,所以即使我的AWS安全已经完成,iptables清除,nginx提供客户端js文件,请求仍然关闭。所以在Firefox中,我得到了net::ERR_CONNECTION_CLOSED,最后发现可能是SSL故障。
mf98qq945#
我希望这对某些人有帮助。我曾经遵循过一个在线教程,上面说我应该为3000 TCP添加一个安全规则,并链接回
source
中的安全组标识符。这是错误的。删除这行,只为IPv4和IPv6的端口3000设置两个自定义TCP。这就为我解决了这个问题。
wlsrxk516#
让我把我的几分钱在这里。
通过将3000端口添加到具有IPv4和IPv6的
Secure groups
,并将nuxt.config.js
中的host
设置为“0.0.0.0”,解决了此问题。此值使Nuxt自动查找“真实的的”IP侦听。gg58donl7#
以下是我解决该问题的方法: