4

当我尝试在端口 80 上启动节点时,错误告诉我该端口正在使用中。我想那是阿帕奇。

“接管”端口 80 并在服务器重新启动后保持这种方式的正确方法是什么?

(Linux xxxx._ _.com 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 GNU/Linux)

4

5 回答 5

11

您可以使用 ip 表将端口 80 映射到 8000

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000

使其永久化

sudo sh -c "iptables-save > /etc/iptables.rules"

并添加

pre-up iptables-restore < /etc/iptables.rules

到您的 /etc/network/interfaces

于 2013-09-09T19:02:11.247 回答
2

要在另一个进程正在侦听端口 80 时接管它,您必须终止该进程(或以某种方式告诉它停止侦听)。为确保 Apache 在下次启动时不会再次尝试侦听端口 80,您需要编辑其配置或阻止其启动。

要查看哪个进程正在侦听端口 80,请运行sudo netstat -ntap并查找以Local Addressport 结尾的行:80。进程的 PID(和名称)位于最右列。

于 2013-09-09T17:38:19.453 回答
1

一个不断运行的未使用的 apache 可能是一个安全漏洞,在任何情况下运行未使用的服务都是没有意义的。

如果你在 ubuntu 上,这就是我用的..

sudo service apache2 stop
sudo update-rc.d apache2 remove
于 2013-09-09T22:10:01.143 回答
1

您可以将 node.js 与 node-http-proxy 一起使用 检查此链接如何在 node-http-proxy 旁边使用 vhosts?以及 如何在端口 80 上运行 Node.js?

谢谢和问候,
阿洛克

于 2013-09-09T17:40:35.527 回答
0

停止当前使用的服务后,您就可以访问端口 80。

在您的情况下,请按照下列步骤操作:

1)systemctl用于停止apache2:

sudo systemctl stop apache2

2)检查apache2状态:

sudo systemctl status apache2

或者只是http://localhost在浏览器中输入。如果你得到一个错误,你很高兴。

ERR_CONNECTION_REFUSED

3) 现在在端口 80 上启动您的 NodeJS 服务器。

4) 您可以在以下位置访问您的服务器http://localhost

更新

如果您在控制台上看到错误,请尝试在node前面加上sudo For 例如。sudo node server.js

这是错误

events.js:137
      throw er; // Unhandled 'error' event
      ^

Error: listen EACCES 0.0.0.0:80
    at Object._errnoException (util.js:1003:13)
    at _exceptionWithHostPort (util.js:1024:20)
    at Server.setupListenHandle [as _listen2] (net.js:1349:19)
    at listenInCluster (net.js:1407:12)
    at Server.listen (net.js:1495:7)
    at Object.<anonymous> (/home/abdus/Desktop/voice-recognition/test.js:7:4)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
于 2018-03-10T14:42:07.447 回答