繁体   English   中英

错误:听 EACCES 0.0.0.0:80 OSx Node.js

[英]Error: listen EACCES 0.0.0.0:80 OSx Node.js

我正在学习 angularJS 书中的教程,并且必须设置服务器。 这是 server.js 文件:

 var express = require('express');
  var app = express();
   app.use('/', express.static('./'));
    app.listen(80);

我收到此错误:

$ node server.js
events.js:154
      throw er; // Unhandled 'error' event
      ^

Error: listen EACCES 0.0.0.0:80

我已经知道,错误 EACCES 意味着我没有访问端口 80 的权限,但我不知道如何解决这个问题。 非常感谢任何帮助!

如果您需要在端口 80 上运行服务器,您应该使用像nginx这样的反向代理,它将使用系统帐户在特权端口上运行,并将请求代理到在非特权端口(> 1024)上运行的 Node.js 服务器。

在开发环境中运行时,您几乎可以以 root 身份运行(即sudo node server.js ),但这在生产环境中相当危险。

这是一个示例 nginx 配置,它将查看请求是否针对文件系统中存在的文件,如果不是,则将请求代理到在端口 9000 上运行的 Node.js 服务器

upstream yournodeapp {
  server localhost:9000 fail_timeout=0;
  keepalive 60;
}

server {
  server_name localhost;
  listen 80 default_server;

  # Serve static assets from this folder
  root /home/user/project/public;

  location / {
    try_files $uri @yournodeapp;
  }

  location @yournodeapp {
    proxy_pass http://yournodeapp;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

授予对节点的 root 访问权限并在端口 80 上启动服务器,您可以这样做

sudo node app.js

这将启动服务器授予端口 80 的权限

首先,不要以 root 身份运行。 那就是要求'它'。 “它”真的很糟糕。 去看电影吧 然后,不要以 root 身份运行您的节点 Web 项目。

// DO NOT DO THIS!
$ sudo node app.js

// DO NOT DO THIS EITHER!
$ sudo su -
# node app.js

相反,使用PM2authbind来执行此操作:

// %user% is whatever user is running your code
sudo touch /etc/authbind/byport/80
sudo chown %user% /etc/authbind/byport/80
sudo chmod 755 /etc/authbind/byport/80

接下来,将此别名添加到您的~/.bash_aliases~/.bashrc~/.bash_profile

alias pm2='authbind --deep pm2'

然后,用 pm2 试试:

pm2 start app.js

在 Windows 上,我通过将 Express 设置为在端口 8080 上侦听 HTTP 和 8443 上侦听 HTTPS 来解决此问题。 它真的不喜欢使用那些较低数量的端口。 此外,我安装并运行了 IIS,因此那里也可能存在某种端口冲突。

须藤 ufw 允许 80/tcp

它应该是端口转发的,至少对我有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM