gpt4 book ai didi

linux - 无法在端口 80 或 443 上运行 Node.js Web 服务

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:50 48 4
gpt4 key购买 nike

我有一个运行 CENTOS 的 VPS,并且正在尝试使用 Node.js。我运行了一个在各个端口上正确运行的示例 Node.js 服务器,但每当我尝试在端口 80 上运行 Node (443 的错误相同)时,我都会收到以下错误:

root@mic [~/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

显然我执行了这个命令两次,因为:当我执行: sudo iptables -t nat -L 时,它返回:

root@mic [~]# 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 Web 服务?

根据我的腻子设置,我访问的端口是端口 22,所以我不明白那里发生了什么。此外,我不打算以 root 身份运行我的网络服务。我创建了另一个权限较少的用户来运行 Node.js Web 服务。

最佳答案

  1. 设置nodejs使用端口8000
  2. 安装 nginx 并将其设置为您的 Nodejs 应用的反向代理。

不要使用 Apache,它会为每个请求创建一个线程/进程,而 nginx 不会。它的工作原理类似于nodejs事件循环,其中您有一个需要处理的请求队列,nginx工作进程从队列中获取每个请求并处理它 - 在您的情况下,将请求发送到nodejs服务器,然后等待响应。

并且永远不要在端口 80 上使用 Nodejs,有太多的用例需要处理,没有必要重新发明轮子

关于linux - 无法在端口 80 或 443 上运行 Node.js Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24421556/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com