[NodeJs+AWS배포] 권한: Error: listen EACCES: permission denied 0.0.0.0:80

Darcy Daeseok YU ·2023년 1월 28일
0

Error: listen EACCES: permission denied 0.0.0.0:80

  1. 백엔드 서버 node app 으로 구동할 때 에러가 발생
  1. 프론트 서버 npm start 으로 구동할 때 에러가 발생

"start" : "next start -p 80"

해결법

  1. sudo administrator 권한으로 실행
  1. REROUTING :80 :443 포트로 접근하는 주소에 대해 예시)4000번 포트로 리다이렉트 걸어준다.
예시) iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 4000 

먼저 1.sudo 관련 포스트를 보니

"리눅스나 OSX같은 UNIX계열의 OS는 1024번 포트 아래의 포트넘버는 previleged 포트넘버로 root 계정이 아니면 사용할수 없다.(windows 계열 무관)"

"Apache같은 웹서버가 앞단에 있다면 상관없음"

"Tomcat이나 그외 서버에서 80포트를 사용하려면 sudo등을 사용 root 계정으로 실행해야함."

"이렇게 웹서버를 root계정으로 실행하는 경우 보안문제 발생위험 있음=>권장하지 않음"

"경우에 따라, 80포트를 사용해야할 경우
OS에서 제공하는 iptables를 사용 80포트를 다른 포트로 리다이렉트 시키거나,
authbind를 설치 특정포트를 특정앱에게 사용할 수 있도록 허용해줄수 있음."

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 

옵션

-A : 새로운 룰 추가 : PREROUTING에 룰 추가 함.
-t : 테이블을 지정 : nat 테이블 지정
-i : 인터페이스를 지정 : 인터넷에 연결되어 있는 장비를 eth0으로 지정
-p : 포로토콜 지정 : tct를 지정
--dport : 도착지 포트 : http:80 / https:443 배포 포트등 요청이 가리키는 도착지 포트넘버
-j : 패킷 어떻게 처리할지 결정 : 패킷을 8080포트로 리다이렉트 처리

출처 : https://blog.outsider.ne.kr/580

profile
React, React-Native https://darcyu83.netlify.app/

0개의 댓글