Ubuntu

無法從 Ubuntu 上的外部 IP 訪問 Node.js

  • April 5, 2017

我敢肯定這是非常愚蠢的,所以請原諒我。我正在嘗試在我的 ubuntu 10.04 的 8080 埠上執行 node.js 伺服器。

這是伺服器上 iptables -L 的結果:

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

這是 nmap -p 8080 的結果(編輯了 IP 地址,因為一切都是或應該是敞開的)

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

為什麼 8080 被視為已關閉?添加這個沒有幫助:

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

我真的很困惑。

我會添加這個,以防有幫助,但我不知道

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

我可以通過 apache 的 80 埠訪問我的正常網站,但 node.js 伺服器無法從外部訪問。從伺服器本身訪問它可以正常工作。

所以我的問題是:我將如何調試這個?除了 iptables 阻止某些埠之外,還有其他的東西嗎?我怎樣才能知道它是什麼?

非常感謝任何幫助!

感謝您添加最後一個 netstat 輸出,它真的很有幫助。您無法從外部訪問 node.js,因為它正在偵聽 localhost IP,即 127.0.0.1。您需要將 node.js 配置為偵聽 0.0.0.0,以便它能夠接受您機器上所有 IP 上的連接。

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/');

引用自:https://serverfault.com/questions/271824