ubuntu 에서 pm2 ssl 적용 후 80 과 443 번 포트로 실행 시 에러 : admin permissions are required to run a server on a port below 1024

STEVELOPER·2022년 10월 5일
0

ubuntu

목록 보기
3/6

React 로 개발한 프로젝트를 개발단계에서는 3001번 포트를 사용하고 있었다.
그리고 이제 https 를 적용하기위해 ssl 을 적용하고는 실행을 다음과 같이 하려했다.

기본은 443 포트로 접근, 80 으로 접근할 경우 443 으로 redirect.
80 으로 접근했을 때 443 으로 redirect 하기 위해서는 두개의 포트에서 client 서버가 돌아야했다.
실행 코드는 하기와 같다

//package.json
"scripts": {
    "start": "concurrently \"PORT=443 HTTPS=true SSL_CRT_FILE=./ssl/address__crt.pem SSL_KEY_FILE=./ssl/address.key react-scripts start\" \"PORT=80 react-scripts start\"",
},

React 에서 http 로 접근했을시 https 로 redirect 해주는 모듈이 있다.

//index.js
import HttpsRedirect from "react-https-redirect";

ReactDOM.render(
  <HttpsRedirect>
    <App />
  </HttpsRedirect>,
  document.getElementById("root")
);

이렇게 실행을 할 경우 에러가 발생했는데, 에러는

admin permissions are required to run a server on a port below 1024

1024 보다 아래의 port 를 사용하려면 admin 의 허가가 필요하다는 것이었다.
찾아 본 결과 해당 오류는 node 가 1024 보다 아래의 port 를 사용하려면 허가가 필요한데 그렇게 설정이 되어있지 않아 생긴 오류였다.

sudo setcap 'cap_net_bind_service=+ep' `which node`

상기 코드와 같이 명령어를 실행할 경우 node 가 1024 보다 아래의 port 를 사용할 수 있다.
상기 코드에서 which nodewhichwhereis 와 같이 관련된 파일의 위치를 출력해주는데 which 의 경우 환경변수에 등록된 path 를 출력해주는 듯 보인다.

sudo getcap `which node`

상기 코드는 조회 기능이다.

REFS
https://steve-mu.medium.com/run-node-js-on-port-less-than-1024-without-sudo-a38fdb383f80

profile
JavaScript, Node.js, Express, React, React Native, GraphQL, Apollo, Prisma, MySQL

0개의 댓글