당연히 내가 3000포트에서 실행주고 있기 때문에 3000포트로 접속해야 페이지 접속이 가능하다.
하지만 보통 웹페이지에 접근할 때는 뒤에 포트번호가 붙지 않는다.
여기서 우리가 알아야 할 건 일반적으로 우리가 웹페이지에 접속할 때는 기본 포트가 뒤에 붙어있는데,
http의 경우 : 80
https의 경우 : 443
이다.
기본 포트는 보이지 않도록 설정되있기 때문에 위 포트로 접속하면 포트는 보이지 않는다.
http 프로토콜로 접속한 사이트에 :80
을 붙여도 80이라는 포트가 보이지 않게 된다는 것이다.
그렇기에 80 포트로 연결됐을 때 3000 포트로 리다이렉트만 해주면 된다.
아래는 그 명령어이다.
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
이것만 하면 포트 번호를 지워도 잘 보인다! 라고 생각했는데, 접속 오류가 뜬다!
EC2 인스턴스 인바운드 규칙에 80 포트가 없기 때문이었다. 추가하면 된다.
인스턴스의 터미널을 종료할 경우 사이트가 뜨지 않는데, 이 문제를 해결하기 위해선 pm2
라이브러리를 사용하면 된다.
pm2
는 백그라운드에서 서버를 실행시켜주기 때문에 인스턴스에서 서버를 종료해도 계속 배포 환경이 실행될 수 있게 해준다.
pm2 를 설치한 후
sudo npm -g install pm2
설치한 후 pm2 명령어를 통해 파일을 실행해보자.
pm2 start 'npm start'
이제 터미널을 종료해도 페이지가 잘 접속된다