본문 바로가기
기획&구현

[BE] Nginx 웹 서버에 https(SSL) 구축하기

by 당근플래너 팀 2023. 2. 3.

안녕하세요! 당근플래너 팀 백엔드를 맡은 재석입니다 😊

 

AWS EC2 인스턴스에 Nginx 설치 및 https(SSL) 구축하는 법을 알아보겠습니다.

본인 개발 환경에 맞는 EC2 인스턴스는 미리 생성을 해주세요.

 

저는 t2.micro, ubuntu22.04, 스토리지 30GB에서 진행하였습니다.

환경이 똑같다면 소요 시간은 20~ 30분이 소요됩니다. 그럼 시작하겠습니다!

 

📌EC2 인스턴스의 IP는 복사 붙여넣기 할일이 많으니 메모장 같은곳에 적어놓으세요 :)

 

1. 도메인 구매

📌IP에 도메인 적용을 이미 했다면 ‘4. Nginx 설치 및 https 적용’으로 이동해주세요.

 

도메인이 있어야 SSL 발급이 가능하기 때문에, 먼저 도메인 구매를 진행하겠습니다.

 

SSL 보안 인증서는 웹사이트의 호스트헤더 값 즉 도메인을 기준으로 인증서를 발급하기 때문에 IP나 기타 서버이름으로 신청을 하면 발급을 받으시더라도 인증서에서 오류가 발생하기 때문에 발급자체가 안됩니다.

 

가비아로 이동해서 도메인 구매를 진행하겠습니다.

가비아 링크 : https://www.gabia.com/

 

웹을 넘어 클라우드로. 가비아

그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브

www.gabia.com

 

 

원하는 도메인 주소를 입력후 검색을 눌러주세요. 저는 danggeunplanner-test2.shop으로 정했습니다.

끝에 .shop이 붙은 도메인은 1년에 550원으로 저렴하여 부담이 없는게 장점이에요 :)

원하는 도메인 주소를 입력해주세요.

 

도메인을 입력 후 선택, 신청을 진행합니다.

 

 

정보 입력, 약관 동의를 진행한 후 다음 단계를 선택합니다. 아래 설정들은 따로 건들이지 않으셔도 됩니다 :)

 

 

다음 단계를 누르면 결제창으로 이동됩니다. 결제를 진행하여 결제 완료를 해주시면 도메인 구매가 완료됩니다. 

결제를 진행하고 완료하면 몇 분 뒤 도메인이 발급됩니다.

 

도메인 구매가 끝났습니다. 이제 EC2 설정을 하러 AWS 페이지로 이동하겠습니다. 

📌아마존 사이트: https://aws.amazon.com/ko/

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

 

aws.amazon.com

 

2. AWS EC2 설정

인스턴스에 http와 https를 허용하는 설정을 할 것 입니다.

 

먼저 보안 그룹 설정을 진행하겠습니다.

AWS EC2를 검색한 다음 메뉴창의 '인스턴스' 클릭 -  인스턴스 창의 '도메인을 적용할 인스턴스' 클릭 -

하단 메뉴 '보안' 클릭 - 보안 창의 '보안 그룹' 클릭을 차례대로 진행합니다.

 

인바운드 규칙 편집을 클릭해주세요.

 

인바운드 규칙에 http, https를 모두 허용해주세요. 소스의 Anywhere-IPv4, IPv6도 모두 뚫어줄세요. 

IP4, IP6도 뚫어주세요.

 

AWS EC2 설정은 끝났습니다. 이제 Route 53 설정을 진행할게요.

 

3. AWS Route 53 연결

인스턴스에 구입한 도메인을 연결하는 작업을 할 것 입니다.

 

검색창에 Route53을 검색하고 이동 후 호스팅 영역 생성을 눌러줄게요.

 

 

도메인 이름창에 구입한 도메인 이름을 적어줄게요. 저는 제가 구입한 도메인인 danggeunplanner-test2.shop을 적어줄게요. 다 적으면 하단에 호스팅 영역 생성을 눌러주세요.

 

그러면 아래와 같은 창으로 이동됩니다. 레코드 생성을 눌러줍시다.

 

레코드 이름에는 아무것도 적지 않고, 값에는 인스턴스 IP를 입력해 줄게요. 레코드 생성을 클릭하여 완료합니다. 

 

방금 입력한 레코드가 추가된 것을 확인하고, 다시한번 레코드 생성을 클릭합니다.

 

이번엔 레코드 이름에 www를 넣고 값에 인스턴스 IP를 입력합니다. 위와 똑같은 값을 넣어주시면 됩니다. 

 

이때까지 입력한 레코드들이 잘 추가가 되었나 확인하고 이제 다시 가비아로 이동할게요.

 

📌가비아 링크 : https://www.gabia.com/

 

웹을 넘어 클라우드로. 가비아

그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브

www.gabia.com

 

가비아에서 로그인을 한뒤 'My가비아' 를 클릭해주세요.

 

 

 

My가비아에 들어왔다면 '도메인'을 클릭해줄게요.

 

IP에 적용할 도메인의 '관리' 버튼을 클릭해주세요.

 

네임서버 설정을 클릭해주세요.

 

 

AWS Route53 레코드 창의 4개의 주소를  1~4 차에 복사 붙여 넣기 해주세요.

📌주소 뒤에 붙은 . 은 빼주셔야 됩니다!

 

모두 잘 붙여넣었다면 '소유자 인증'을 한 뒤 '적용'을 눌러주세요. 완료했다면 IP에 도메인이 적용 되었습니다.

이제 서버에 Nginx를 설치하고 https를 적용해봅시다. 

 

4. Nginx 설치 및 https 적용

웹 서버인 Nginx를 깔고 Cerbot을 통해 https를 적용 시켜보겠습니다.

 

📌터미널을 통해 우분투 서버에 접속하고 Nginx와 Cerbot(SSL 발급)을 설치합니다.

$ sudo apt update #동기화
$ sudo apt install nginx # nginx 설치
$ sudo service nginx status # nginx 상태 확인, 초록불 active(running) -> 정상

$ sudo snap install certbot --classic # SSL을 발급해주는 cerbot 설치 
$ sudo certbot --nginx -d 도메인 -d www.도메인 # 도메인에 SSL 적용, 밑에 예시가 있습니다.

예) sudo certbot --nginx -d danggeunplanner-test2.shop -d www.danggeunplanner-test2.shop

 

이메일 입력 후 엔터.
동의하는지 물어볼 때마다 y 누르면 완료!

 

SSL을 발급 받았습니다! 발급 받은 SSL이 잘 적용 됬나 확인해 봅시다.

$ vi /etc/nginx/sites-available/default # SSL이 잘 적용됬는지 확인하기, 변경할 건 없음.

 

위 사진 처럼 적용 됬는지 확인한다. 확인 완료 후 나간다.

 

적용이 잘 됬는지 확인이 됬다면 Nginx 설정을 해야 합니다. 저는 my-server.conf 라는 파일에서 진행하겠습니다.

Nginx는 conf.d 폴더 아래있는 파일은 모두 import 하기때문에 파일 이름은 상관이 없습니다.

{filename}.conf면 모두 적용됩니다. 익숙한 파일명으로 설정하시길 바랍니다.   

$ sudo vi /etc/nginx/conf.d/my-server.conf # conf 파일 수정, 아래에 있는 코드 붙여넣고 저장

 

# 붙여넣기 해주세요. server에 관한 추가적인 세팅은 본인 환경에 맞게 구성해주세요. 
server {
  location / {
		proxy_pass http://localhost:8080; # 나의 스프링 서버주소
		proxy_set_header Host $host;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
		proxy_set_header Accept-Encoding gzip;
	}
}

 

저장 후, Nginx를 재시작합니다. 아래 타미널에 아래 명령문을 입력해주세요.

$ sudo service nginx restart # nginx 재시작 하기
$ sudo service nginx status # nginx 상태 확인

 

적용 성공!

 

마지막으로 잘 적용됬는지 확인해봅시다. 브라우저를 여시고 url에 도메인을 쳐서 들어가볼게요.

도메인과 www.도메인 두개 다 적용 됬는지 확인 해주세요.확인이 됬다면 https 적용이 잘 된것입니다 :)

도메인 주소 확인
www.도메인 주소 확인

 

 

이때까지 도메인을 구입하고 EC2에 Nginx 설치, https 적용 많은것을 해봤습니다 :)

어렵진 않지만 설정이 많아 귀찮은 작업임은 틀림없습니다. 

따라 오시느라 정말 수고 많으셨습니다! 

 

그럼 안녕~!