Ubuntu
無法從 Ubuntu 上的外部 IP 訪問 Node.js
我敢肯定這是非常愚蠢的,所以請原諒我。我正在嘗試在我的 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/');