-
6. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] - 도메인&nginx공부하기/node.js 2023. 2. 3. 00:17
[AWS EC2 배포] - 기본편에서 발생한 문제점 2번을 해결하는 글입니다
DNS로 인스턴스에 접근하기 ( 퍼블릭ip:포트번호로 접근합니다. 일반적으로 우리는 ip:포트번호로 접근하진 않습니다 )
우선 도메인을 하나 구매해야합니다.
저는 가비아에서 도메인을 구매하였고 이벤트 도메인으로 550원(1년)에 도메인을 구매하였습니다.
1. aws 웹페이지 접속 후 검색창에 route 53을 입력하고 route 53 페이지에 진입합니다.
2. 호슽팅 영역 생성 버튼을 클릭합니다.
3. 도메인 이름 인풋박스에 미리 구매한 도메인을 입력한 후 호스팅 영역 생성 버튼을 클릭합니다.
4. 생성된 결과 레코드 중 NS유형의 값/트래픽 라우팅 대상의 4개의 값을 복사한 뒤 도메인을 구매한 사이트로 이동합니다.
-> 저는 가비아에서 도메인을 구매했기 때문에 예제 이미지를 가비아로 합니다.
5. 가비에 접속한 후 my가비아 -> 구매한 도메인의 관리 버튼을 클릭합니다.
6. 네임서버 설정 버튼을 클릭 후 aws 호스팅 영역 생성 후 얻은 NS 유형 4개를 차례대로 1~4차까지 넣고 적용 버튼을 클릭합니다.
7. 다시 aws route 53 페이지로 돌아가서 호스팅 영역의 레코드를 생성합니다.
-> 레코드 생성은 dns 서버에 ec2 인스턴스 ip주소를 설정합니다.
8. 레코드 값 텍스트 에리어에 ec2 퍼블릭 ip 주소를 넣어준 후 레코드를 생성합니다.
-> 서브도메인은 사용하지 않으므로 비워둡니다.
9. 조금 기다린 후 도메인:포트번호로 접속하면 도메인이 연결된 것을 확인할 수 있습니다.
-> 이상하지 않나요? 우리는 보통 도메인으로 접속을 시도하지만 위의 연결된 방식은 도메인:포트번호입니다.
-> 이를 해결하기 위해서 ec2 인스턴스 서버에 nginx를 사용하여 리버스 프록시를 설정하겠습니다.
10. 터미널로 ec2 인스턴스에 접근한 뒤 nginx를 설치합니다.
sudo amazon-linux-extras install nginx1 #nginx 설치 sudo systemctl start nginx.service # nginx 실행 sudo systemctl status nginx # nginx 상태 확인
11. 그 후 ec2 인스턴스 -> 인바운드 규칙 -> 80포트를 개방합니다.
12. 그 후 구매한 도메인에 접근하면 아래 이미지와 같은 화면이 출력됩니다.
-> 우리는 도메인으로 접근하면 pm2로 실행중인 서버에 접근하고 싶은데.. 스태틱한 페이지가 랜더링되고 있는걸 확인하고 있습니다.
13. nginx의 설정 파일을 변경하여 포트포워딩을 해주도록 하겠습니다.
-> 포트포워딩은 IP 주소와 포트 번호 결합의 통신 요청을 다른 곳으로 넘겨주는 것입니다.
14. 터미널로 ec2 인스턴스에 접속한 뒤 nginx.conf 파일을 수정합니다.
sudo vi /etc/nginx/nginx.conf # 설정 파일 수정 ##### nginx.conf 파일의 server 영역 ###### ... server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; # location 추가 location / { proxy_pass http://127.0.0.1:3000; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } ... ###### sudo service nginx restart # nginx 재시작
15. nginx를 재시작 후 다시 도메인으로 접근하면 정상적으로 연결된걸 확인할 수 있습니다.
16. nginx의 인바운드 포트인 80포트를 개방했으므로 외부에서 직접 앱 서버로 접근할 수 없도록 aws 페이지에 접속하여 인바운드 규칙 3000번 포트를 닫아줍니다.
'공부하기 > node.js' 카테고리의 다른 글
9. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] - https (0) 2023.02.05 7. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] - 자동배포 (1) (0) 2023.02.03 5. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] - pm2 (0) 2023.02.02 4. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] (0) 2023.02.01 3. NestJs & Git Actions CI/CD - [ AWS EC2 접속 ] (0) 2023.02.01