oli*_*ier 58 javascript macos node.js
我正在按照angularJS书中的教程进行操作,并且必须设置服务器.这是server.js文件:
var express = require('express');
var app = express();
app.use('/', express.static('./'));
app.listen(80);
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
$ node server.js
events.js:154
throw er; // Unhandled 'error' event
^
Error: listen EACCES 0.0.0.0:80
Run Code Online (Sandbox Code Playgroud)
我已经知道,错误EACCES意味着我没有端口80的访问权限,但我不知道如何解决这个问题.任何帮助非常感谢!
ves*_*sse 55
如果需要在端口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";
}
}
Run Code Online (Sandbox Code Playgroud)
小智 50
您可以执行对端口80的节点和启动服务器的root访问权限
sudo node app.js
Run Code Online (Sandbox Code Playgroud)
这将启动服务器授予端口80的权限
aza*_*tar 12
最重要的是,不要以root身份运行.那就是'它'."它"非常糟糕.去看电影吧.然后,不要以root身份运行节点Web项目.
// DO NOT DO THIS!
$ sudo node app.js
// DO NOT DO THIS EITHER!
$ sudo su -
# node app.js
Run Code Online (Sandbox Code Playgroud)
// %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
Run Code Online (Sandbox Code Playgroud)
接下来,将此别名添加到您的~/.bash_aliases或~/.bashrc或~/.bash_profile:
alias pm2='authbind --deep pm2'
Run Code Online (Sandbox Code Playgroud)
然后,用pm2尝试:
pm2 start app.js
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60692 次 |
| 最近记录: |