AWS는 디렉토리 경로를 기반으로 HTTPS 트래픽을 서로 다른 두 EC2 인스턴스로 라우팅하는 방법을 제공합니까?


10

AWS 오퍼링에서 다음이 가능한지 궁금합니다.

https://www.example.com/a/-> EC2 인스턴스 A 에서 Apache에서 제공

https://www.example.com/b/EC2 인스턴스 B 에서 Apache에서 제공

명확히하기 위해 한 디렉토리 경로의 파일이 다른 디렉토리 경로의 파일과 동일한 서버 인스턴스에있는 것을 원하지 않습니다.

나는 이것이 일종의 프록시로 가능할 수도 있지만 AWS 제품 중 하나를 사용하여 더 쉬운 솔루션이 있다는 것을 알고 있습니다.

EC2로드 밸런서는 디렉토리 경로에 따라 스위칭을 허용하지 않는 것 같습니다. Route 53 은 DNS 수준에서 작동하며,이를 기반으로 IP를 반환하는 경로 정보가 없습니다.


EC2로드 밸런서는 너무 어리석어 서 Host:헤더를 읽지 않고 가짜 트래픽을 필터링 하지 않습니다 . 헤더를 보는 것이 너무 많은 경우 요구하는 기능을 추가하지는 못할 것 같습니다. 자비 롭게도 다른 옵션이 있습니다.
병아리

답변:


29

경로 기반 라우팅 을 수행 하는 AWS Application Load Balancer를 사용하십시오 . 그 두 번째 링크는 그것을 수행하는 튜토리얼입니다.

간단히 말해서 ALB를 정상적으로 설정 한 후 다음 단계를 수행하십시오 (AWS 자습서에서 복사).

  • 리스너 탭, 청취자에 대한 규칙을 확인하고 선택하려면 화살표를 사용하여 추가 규칙을 . 다음과 같이 규칙을 지정하십시오.

  • 내용은 대상 그룹 이름 , 당신이 만든 두 번째 대상 그룹을 선택합니다.

  • 대한 경로 패턴 정확한 패턴을 지정하는 것은 경로 기반 라우팅에 사용되는 (예를 들어, / IMG / *). 자세한 내용은 리스너 규칙을 참조하십시오.

  • 저장을 선택 하십시오 .


감사! 원래 EC2 Application Load Balancer를 체크 아웃하고 마법사를 진행했지만 실제로는 생성하지 않았습니다. 마법사는 경로 옵션을 제공하지 않았습니다. 튜토리얼에서 지적했듯이 먼저 튜토리얼을 작성한 다음 규칙을 편집해야합니다.
Joseph Shih

9

Tim의 탁월한 답변 외에도 CloudFront를 통해이를 달성 할 수 있습니다 .

먼저, EC2 인스턴스 A 및 EC2 인스턴스 B (로드 밸런서, 비 AWS 호스트 또는 S3 버킷 일 수도 있음)에 대한 오리진을 추가 하여 배포를 만듭니다 .

그런 다음, 캐시 동작 규칙 을 설정 하여 / a / * 및 / b / *를 적절한 출처에 매핑하십시오.

이 목적으로 CloudFront를 사용하는 것이 적합한 지 여부는 애플리케이션과 CDN의 필요성에 따라 다릅니다.


4
이것은 또한 당신이 원하는 경우에 적용 할 수 /a*/b*AWS 다른 곳에 내에서 실행 무언가에 의해 처리 다른 서비스, 다른 계정, 다른 지역, 심지어는 하나 개의 경로에 의해 처리 될 수 있습니다. CloudFront에는 개념적으로 CDN이 전혀 필요없는 많은 사용 사례가 있습니다.
Michael-sqlbot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.