簡體   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