错误:侦听 EACCES 0.0.0.0:80 OSx 节点.js
Error: listen EACCES 0.0.0.0:80 OSx Node.js
我正在按照 angularJS 书中的教程进行操作,必须设置一个服务器。这是服务器.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),该代理将使用特权端口上的系统帐户运行,并将请求代理到在非特权端口上运行的 Node.js 服务器 (> 1024)。
在开发环境中运行时,您几乎可以自由地以 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";
}
}
授予对端口 80 上的节点和启动服务器的 root 访问权限你可以做
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
相反,请使用 PM2 和身份验证来执行此操作:
// %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设置为侦听HTTP的端口8080和HTTPS的8443来解决此问题。 它真的不喜欢使用那些编号较低的端口。此外,我已经安装并运行了IIS,因此那里也可能是某种端口冲突。
须藤UFW允许80/TCP
它应该是端口转发的,至少对我有用
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 节点.js将变量显示为 HTML
- 如何解决'窗口未定义'终端上的节点JS出错
- S3文件上传文件对象使用节点js
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- 嵌套的promise节点js
- 使用节点JS发送电子邮件
- 节点JS重定向循环
- 起始节点.js用于并行的线程池
- 获取图像节点js的主色
- 调整节点js中的图像大小
- 节点JS express和控制台输出到命令行与浏览器
- 节点JS:时间机器坏了——timekeeper.travel不做时间旅行
- 如何访问日期并将其插入数据库?节点.JS&MongoDB
- 节点.js快速删除 req.body 不起作用
- 节点.js中的嵌套异步操作
- 如何在核心php应用程序中使用节点js json Web令牌库
- 使用节点js的Bootstrap和Jquery
- 节点.js加密输入/输出类型
- 节点.js在不可能的地方打印“未定义”