Amazon EC2 错误:监听 EACCES 0.0.0.0:80

问题描述 投票:0回答:6

我已经将 HTTP TCP 端口 80 添加到入站规则中,但仍然收到错误:

Error: listen EACCES 0.0.0.0:80
    at Object._errnoException (util.js:992:11)
    at _exceptionWithHostPort (util.js:1014:20)
    at Server.setupListenHandle [as _listen2] (net.js:1338:19)
    at listenInCluster (net.js:1396:12)
    at doListen (net.js:1505:7)
    at _combinedTickCallback (internal/process/next_tick.js:141:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
    at Function.Module.runMain (module.js:695:11)
    at startup (bootstrap_node.js:191:16)
    at bootstrap_node.js:612:3
node.js http amazon-ec2 vue.js yarnpkg
6个回答
20
投票

您可能必须使用 sudo 运行 Node.js 脚本,因为您想监听端口 80。


6
投票

如果没有 root 权限,则无法运行侦听低端口(低于 1024)的进程。

您可以尝试以

sudo
身份运行,如上所述,或者开始使用反向代理(例如 nginx),在另一个端口上启动进程并使用反向代理将调用从端口
80
转发到任何端口您启动进程的端口。


3
投票

错误代码 EACCES 表示您没有适当的权限在该端口上运行应用程序。在 Linux 系统上,任何低于 1024 的端口都需要 root 访问权限。


1
投票

例如,您需要使用反向代理将呼叫从端口 80 转发到 8080。


0
投票

我在尝试通过

node
命令执行
npm
脚本时遇到了这个问题。为了解决这个问题,我直接使用
node
命令执行它。 (还需要使用
sudo
)。

来自:

sudo npm run start

致:

sudo node index.js


0
投票

您应该永远不以root权限运行网络应用程序!

您可以使用 setcap 允许节点在没有 root 的情况下侦听特权端口。

sudo setcap 'cap_net_bind_service=+ep' $(which node)
© www.soinside.com 2019 - 2024. All rights reserved.