Contents

AWS EC2 서버에 HTTPS 적용하기(2) - Cloudflare 이용 방법

관련 글

 

AWS EC2에 HTTPS를 연결하는 방법은 몇가지가 있는데
그 중 하나는 Route53을 이용하는 것이고,
다른 하나는 도메인 서비스의 프록싱을 통해 바로 연결하는 방법이다.
 

전자의 경우 위 관련 글의 링크에서 참고할 수 있으며 이 글은 후자에 관한 글이다.
 

우선 EC2 인스턴스에는 public IPv4 주소를 하나 부여할 수 있다.
이는 인스턴스 생성시 설정에서 ‘자동으로 부여하기’를 통해 부여할 수도 있고, 따로이 탄력적 IP를 하나 생성하여 부여할 수도 있다.
 

바로 이 주소를 다음과 같이 적용할 수 있다.

도메인 연결

/images/SCR-20240305-lceq.png
 

  1. 이름에는 하위도메인을 입력한다.
  2. 예를 들어 도메인 주소가 abc.com이라고 한다면, EC2에 연결할 하위도메인으로 ‘api’이라고 입력하면 이제부터 EC2의 주소는 api.abc.com으로 사용할 수 있다.
  3. 그리고 콘텐츠 부분에 EC2에 연결되어있는 Public IPv4 주소를 입력하면 된다.
     

이렇게 하면 일단 EC2주소는 바로 소유하고 있는 도메인으로 연결된다.
 

누군가 브라우저에서 또는 개발툴에서 등등 위에서 설정한 하위도메인을 포함한 주소로 접속하면 Cloudflare는 이 주소를 EC2의 public IPv4 주소로 연결하여 준다.
 

매우 간단한 방법이다.

서버의 port 연결

하지만 주의할 점이 있는데, 바로 EC2에서 서버의 port 적용 부분이다.
 

예를 들어 EC2에서 어떤 서버를 작동할때 해당 port8000이라고 했다면,
실제 서버의 주소는 http://3.33.333.333:8000이 된다. (여기서 3.33.333.333은 임의의 AWS EC2의 public IPv4 주소이다.)
 

하지만 Cloudflare에서 프록싱해주는 주소는 3.33.333.333까지이지 :8000 포트를 포함하지 않는다.
물론 위 이미지에서 콘텐츠부분에 포트번호를 넣어봤자 지원하지 않는 IPv4주소라며 오류를 내뱉을 뿐이다.
 

이때 Cloudflare의 “규칙” 서비스를 이용할 수 있다.

/images/SCR-20240305-ljre-2.png

Cloudflare의 해당 도메인에서 좌측 사이드메뉴의 규칙 / Origin Rules를 선택한다.1

  1. 규칙 이름 : 적당한 규칙이름을 적는다. (아무거나 적어도 상관없다.)
  2. 필드 : 전체 URI
  3. 연산자 : 다음으로 시작
  4. : 아까 DNS에서 설정한 하위도메인의 풀 주소를 적는다. (https로 시작한다.)
  5. 대상 포트 : EC2 서버를 가동시킬때 적용한 port번호를 적어준다.
  6. 그리고 화면 우측 아래에 있는 ‘배포’ 버튼을 누르면 끝.  

보통 1~2분 내에 적용되며 매우 간단하고 쉽다.
 

프록싱을 통한 HTTPS 적용의 단점

현재 내가 알기로 이 방법이 가장 간단하고 편하며 경제적이다.[^1]

단, 치명적인(?) 단점이 있다.
바로 프록싱 우회로 인한 속도 저하이다.

  1. 다음은 현재 Cloudflare의 무료 플랜에서 이용중인 HTTPS 프록싱 우회시 최고 속도와 최저속도이다.

/images/SCR-20240314-trus.png

/images/SCR-20240314-tryk.png
 

빨라도 812ms 정도이고 느릴땐 무려 1초가 넘을 때도 있었다.
이 정도의 속도는 프론트에서 아무리 최적화를 하더라도 실제 최종사용자는 화면 전환시 ‘깜.빡’하는 딜레이를 느끼며 1초가 넘는 지연시 답답함을 느낄 수 있는 속도이다.
 

  1. 다음은 AWS의 Route53과 로드밸런서를 이용한 HTTPS 적용시 속도이다.

/images/SCR-20240314-tsbl.png
 

16ms는 거의 클릭과 동시라는 표현이 맞을 정도로 빠른 속도이다.
앞서 언급한 HTTPS를 적용하는 두가지 방법간 속도 비교에 있어 충분한 고민이 필요하다고 생각된다.

 


  1. Cloudflare의 Origin Rules는 무료 플랜에서 10개를 사용할 수 있다. ↩︎