web-dev-qa-db-fra.com

Node.js n'est pas accessible à partir des adresses IP externes sur Ubuntu

Je suis sûr que c'est très noobish, alors pardonnez-moi. J'essaie d'exécuter un serveur node.js sur le port 8080 de mon ubuntu 10.04.

Voici le résultat d'iptables -L sur le serveur:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Et voici le résultat de nmap -p 8080 (modification de l'adresse IP car tout est ou devrait être grand ouvert)

nmap 173.203.xxx.xxx -p 8080 -A

Starting Nmap 5.00 ( http://nmap.org ) at 2011-05-19 22:52 PDT
Interesting ports on xxx (173.203.xxx.xxx):
PORT     STATE  SERVICE    VERSION
8080/tcp closed http-proxy

Pourquoi diable 8080 est-il considéré comme fermé? L'ajout de cela n'a pas aidé:

iptables -A OUTPUT -p tcp  --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp  --dport 8080 -j ACCEPT

Je suis vraiment confus.

J'ajouterai ceci, au cas où cela aiderait, mais je ne sais pas

 netstat -pan | grep 80
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN          16785/node      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16471/Apache2

Je peux accéder à mon site Web habituel à partir du port 80 sur Apache, mais le serveur node.js est inaccessible de l'extérieur. L'accès à partir du serveur lui-même fonctionne bien.

Donc, ma question est: comment pourrais-je procéder pour déboguer cela? Pourrait-il y avoir autre chose que iptables bloquant certains ports? Comment savoir ce que c'est?

Toute aide très appréciée!

18
Mikael Gramont

Merci d'avoir ajouté la dernière sortie netstat, cela a vraiment aidé. Vous ne pouvez pas accéder à node.js de l'extérieur car il écoute sur IP localhost, c'est-à-dire 127.0.0.1. Vous devez configurer node.js pour écouter sur 0.0.0.0 afin qu'il puisse accepter les connexions sur toutes les IP de votre machine.

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8080, "0.0.0.0");
console.log('Server running at http://0.0.0.0:8080/');
30
Hameedullah Khan

Selon votre sortie netstat, le port 8080 est ouvert uniquement pour 127.0.0.1 qui est localhost, donc l'accès à partir des travaux du serveur (qui est localhost), mais pas d'ailleurs.

La bonne sortie devrait ressembler à

0.0.0.0:8080
4
freethinker

J'ai eu le même problème.

J'ai fait ce qui suit

  1. Dans Google Cloud Console, vous devez activer les ports que vous utilisez pour Nodejs
  2. utilisez le lien suivant pour activer les mêmes ports sur le serveur Ubuntu https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-14- 04

  3. Et après ce dernier, ce qui me manquait est Réseau -> Règles de pare-feu -> default-allow-internal -> toutes les adresses IP 0.0.0.0/0

see this image

Terminé

0
Tejas