오류 : 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 서버에 대한 요청을 프록시해야합니다.
개발 환경에서 실행하는 경우 루트 (예 :)로 실행할 sudo node server.js
수는 있지만 프로덕션 환경에서는 다소 위험합니다.
다음은 요청이 파일 시스템에있는 파일에 대한 것인지 확인하고 그렇지 않은 경우 포트 9000에서 실행되는 Node.js 서버에 요청을 프록시하는 샘플 nginx 구성입니다.
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에서 서버를 시작하려면 다음을 수행하십시오.
sudo node app.js
이것은 포트 80에 대한 권한을 부여하는 서버를 시작합니다
무엇보다도 루트로 실행하지 마십시오. 그것은 '그것'을 요구합니다. "그것"은 정말 나쁩니다. 영화 보러 가세요 . 그런 다음 노드 웹 프로젝트를 루트로 실행하지 마십시오.
// DO NOT DO THIS!
$ sudo node app.js
// DO NOT DO THIS EITHER!
$ sudo su -
# node app.js
대신 PM2 및 authbind 를 사용 하여 다음 을 수행하십시오.
// %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
or ~/.bashrc
또는에 추가합니다 ~/.bash_profile
.
alias pm2='authbind --deep pm2'
그런 다음 pm2로 시도하십시오.
pm2 start app.js
On Windows I fixed this by setting Express to listen on port 8080 for HTTP and 8443 for HTTPS. It really doesn't like using those lower number ports. Also I have IIS installed and running so it might be some sort of port conflict there too.
ReferenceURL : https://stackoverflow.com/questions/35068712/error-listen-eacces-0-0-0-080-osx-node-js
'Development Tip' 카테고리의 다른 글
Android Studio에서 코드 줄을 (위 / 아래) 이동하는 방법은 무엇입니까? (0) | 2020.12.29 |
---|---|
아무것도하지 않는 python pass 문에 해당하는 javascript가 있습니까? (0) | 2020.12.29 |
언제 sqlalchemy back_populates를 사용해야합니까? (0) | 2020.12.29 |
AssertionError : 뷰 함수 매핑이 기존 끝점 함수를 덮어 씁니다 : main (0) | 2020.12.28 |
오류 1148 : 사용 된 명령은이 MySQL 버전에서 허용되지 않습니다. (0) | 2020.12.28 |