Auf Node.js kann unter Ubuntu nicht über externe IP-Adressen zugegriffen werden

17

Ich bin sicher, das ist sehr noobisch, also vergib mir. Ich versuche, einen node.js-Server auf Port 8080 meines Ubuntu 10.04 auszuführen.

Hier ist das Ergebnis von iptables -L auf dem Server:

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

Und hier ist das Ergebnis von nmap -p 8080 (bearbeitet die IP-Adresse, weil alles weit offen ist oder sein sollte)

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

Warum um alles in der Welt wird 8080 als geschlossen angesehen? Dies hinzuzufügen hat nicht geholfen:

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

Ich bin wirklich verwirrt.

Ich werde dies hinzufügen, falls es hilft, aber ich weiß es nicht

 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

Ich kann auf meine reguläre Website zugreifen, die über Port 80 auf Apache ausgeführt wird, aber der node.js-Server ist von außen nicht zugänglich. Der Zugriff vom Server aus funktioniert einwandfrei.

Meine Frage lautet also: Wie gehe ich beim Debuggen vor? Könnte es etwas anderes geben als iptables, die einige Ports blockieren? Wie finde ich heraus, was es ist?

Jede Hilfe sehr geschätzt!

Mikael Gramont
quelle
Für diejenigen, die über Google hierher gekommen sind: Wenn Sie einen Dienst in der Google Cloud gehostet haben und mit diesem Problem konfrontiert sind, stellen Sie
Atul

Antworten:

29

Vielen Dank für das Hinzufügen der letzten Netstat-Ausgabe, es hat wirklich geholfen. Sie können nicht von außerhalb auf node.js zugreifen, da es die IP des lokalen Hosts überwacht, z. B. 127.0.0.1. Sie müssen node.js so konfigurieren, dass es 0.0.0.0 überwacht, damit Verbindungen auf allen IP-Adressen Ihres Computers akzeptiert werden.

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/');
Hameedullah Khan
quelle
Ich habe das vermutet, bin aber noch nie auf eine 0.0.0.0 gestoßen, also habe ich sie ignoriert. Ich habe deine Korrektur angewendet, und das hat es geschafft, danke!
Mikael Gramont
Ich habe auch dieses Problem. Ich habe diesen Code befolgt, aber auf meinen NodeJS-Server kann von außen immer noch nicht zugegriffen werden.
Xybrek
Ja, es geht mir genauso.
1
hat bei mir nicht funktioniert
Jitendra Pancholi
Funktionierte unter MacOS Sierra mit Node v8.1.3
Liran H nicht.
4

Gemäß Ihrer Netstat-Ausgabe ist Port 8080 nur für 127.0.0.1 (localhost) geöffnet. Daher funktioniert der Zugriff vom Server (localhost), jedoch nicht von einem anderen Ort.

Die richtige Ausgabe sollte so aussehen

0.0.0.0:8080
Freidenker
quelle