node.js - instalar - install node js amazon linux ami
Apertura del puerto 3000 EC2 Amazon web services (4)
Estoy tratando de usar nodejs y socket.io para entregar una aplicación web, que usa websocket en el puerto 3000.
Abrí el puerto 3000 en mi instancia de EC2 en mi consola de administración agregando la regla de TCP entrante al grupo de seguridad relevante, sin embargo, todavía no puedo acceder a ella a través de dns públicos en mi navegador.
sudo netstat -tulpn no lo muestra como un puerto abierto.
¿Qué me estoy perdiendo? ¿Hay algún servicio que necesite reiniciar o una línea de comando que necesito presionar para que se ejecute?
Gracias
sudo netstat -tulpn no lo muestra como un puerto abierto.
El comando netstat mostrará qué procesan todos los puertos que están siendo escuchados por "algunos". Entonces, en este caso, como ha mencionado, parece que su aplicación no está escuchando en el puerto 3000.
Primero, arregle su aplicación y asegúrese de que esté escuchando en el puerto 3000.
Además, netstat
no tiene nada que ver con si un puerto está abierto / cerrado desde la perspectiva del firewall. Le indicará si un puerto determinado está en modo LISTENING
por algún proceso.
Sigue estos pasos:
- Asegúrese de que su aplicación esté escuchando en el puerto 3000:
netstat -anp | grep 3000
netstat -anp | grep 3000
tambiéntelnet 127.0.0.1 3000
- Luego, asegúrese de que el firewall local esté configurado para permitir el acceso entrante al puerto 3000 O deshabilite el firewall local para realizar una prueba rápida (
service iptables stop
). para linux, usualmente esiptables
- Permita el acceso entrante al puerto 3000 en su grupo de seguridad de AWS.
Siga los 3 puntos anteriores y avísenos si todavía tiene el mismo problema.
Además de todos los pasos anteriores, compruebe si tiene ufw (firewall sin complicaciones) configurado.
para comprobar si ya has ejecutado do:
sudo ufw status
si se está ejecutando, para permitir el puerto 3000, simplemente haz el comando
sudo ufw allow 3000
Esto resolvió mi problema. Olvidé que me había instalado hace un tiempo, y recientemente empecé a usar mi instancia de Aws nuevamente.
Supongo que hizo los cambios usando la consola de administración de AWS. Pero esto solo significa que el sistema de Amazon permitirá que el mensaje en el puerto 3000 a través de sus propios sistemas de seguridad llegue a su servidor.
Su servidor EC2 (no dice si es Windows o Linux) puede tener su propio sistema de firewall en el que tiene que abrir el puerto 3000. Tendrá que mirar la documentación de su servidor a la configuración que necesita cambiar.
Supongo que intentó abrir un navegador en su instancia EC2 y puede acceder a la aplicación web desde allí.
Además, pensando lateralmente, si no hay otros servidores web ejecutándose en su servidor EC2, ¿por qué no cambia su webapp node.js para usar el puerto 80?
Tuve un problema similar, pero estaba usando socketio con 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);
Pero las claves estaban equivocadas , así que aunque mi seguridad de AWS estaba hecha, iptables clear y nginx proporcionando el archivo js del cliente, la solicitud se mantuvo cerrada. Entonces en Firefox obtuve net :: ERR_CONNECTION_CLOSED y finalmente descubrí que podría ser la falla de SSL.