我有一台运行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