EMD Blog

ALB와 CloudFront를 사용할 때 VirtualHost 사용 테스트 본문

Public Cloud/AWS

ALB와 CloudFront를 사용할 때 VirtualHost 사용 테스트

EmaDam 2022. 12. 27. 11:44

Virtual Host를 위해 CloudFront 원본 요청 헤더에 호스트를 포함시키려면 레거시 캐시 설정에서 호스트 헤더 설정이 필요함.

https://aws.amazon.com/ko/premiumsupport/knowledge-center/configure-cloudfront-to-forward-headers/

원본 요청 헤더에 호스트를 포함 시켜서 ALB에 요청 시 ALB는 어떻게 호스트를 IIS로 전달할 것인지 고민 필요.

다음과 같은 방법을 조사해봐야함.

  1. ALB에 호스트기반 라우팅 설정 후 CloudFront의 헤더 호스트를 읽어 적절하게 라우팅
  2. ALB에서도 요청 헤더에 호스트 정보를 담아 전달

1번의 경우 가능은 한 것으로 보임. 하지만 결국 Host에 따라 적절하게 콘텐츠를 반환해주는 것은 IIS임. 때문에 ALB에서 제공해주는 라우팅 기능은 Host에 따라 /path1, /path2 이런식으로 라우팅 해주는 것인 한계임. 이 말은 IIS에서 Virtual Host 설정을 할 필요는 없다는 뜻.

그런데 ALB 옵션을 보면 preserve_host_header 옵션이 있는 것을 확인할 수 있음. 이 옵션은 호스트 타겟 그룹내 서버에 호스트헤더를 전달할 것인지 결정하는 옵션임.

이 옵션을 활성화해서 2번 방식으로 진행이 되는지 테스트 하였음.

즉, Cloudfront > ALB로 요청 시 헤더에 호스트 정보를 담아 전달하고 ALB에서도 마찬가지로 헤더에 호스트를 담아 IIS로 전달하는 방식

테스트를 위해 그누보드로 간단하게 샘플 어플리케이션과 VirtualHost (각각 test.emadam.shop, test2.emadam.shop)을 구성.

 

테스트 결과 잘 작동됨을 확인하였음.