我有一臺運行CENTOS的VPS,我正在試驗Node.js. 我跑了一個例子Node.js的服務器上運行正常的各個港口,但每當我試圖運行在80端口節點(443同樣的錯誤)我得到以下錯誤:無法在端口80或443上運行node.js webservice
[email protected] [~/Projects/NodeTutorial2]# node index.js
Server running on port 80.
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at errnoException (net.js:883:11)
at Server._listen2 (net.js:1021:14)
at listen (net.js:1043:10)
at Server.listen (net.js:1109:5)
at Object.<anonymous> (/root/Projects/NodeTutorial2/index.js:8:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
我試圖重定向80端口3000通過做:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
顯然我執行該命令兩次,因爲: 當我做了:命令iptables的NAT -t -L,它返回:
[email protected] [~]# sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 3000
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 3000
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
但無濟於事,我仍然得到同樣的錯誤。
我試圖用netstat -tulpn查看端口80上運行的是什麼? grep:80命令並返回:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 477/httpd
tcp 0 0 :::80 :::* LISTEN 477/httpd
所以我殺死了端口80上運行的進程,然後立即啓動了我的VPS。
什麼端口應該運行我的node.js webservice?
根據我的膩子設置,我正在訪問的端口是22端口,所以我不明白那裏發生了什麼。 此外,我不打算以root身份運行我的web服務。 我創建了另一個用戶,其權限較小,可以運行node.js webservice。
Apache或一些web服務器80(可能443)上運行。 – Joe
是的,但我殺了80端口,它立即引導我離開我的膩子連接。也許我應該嘗試殺死443,看看會發生什麼。 – ConfusedDeer
httpd和sshd是完全不同的東西(正如您注意到的,端口22與端口80/443)。你應該記錄你實際做了什麼來「殺死」httpd來啓動。 – Joe