리스너 규칙 및 경로 기반 라우팅
ALB에 리스너 규칙을 작성하여 호스트 헤더, 경로 패턴 또는 쿼리 문자열을 기준으로 요청을 서로 다른 대상 그룹으로 라우팅합니다.
리스너 규칙 및 경로 기반 라우팅은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
ALB 수신기 설명
ALB 수신기는 지정한 프로토콜과 포트를 사용해 연결 요청을 확인하는 프로세스입니다(예: 포트 80의 HTTP 또는 포트 443의 HTTPS). 각 수신기에는 하나 이상의 규칙이 있으며, 규칙은 요청의 내용을 기준으로 요청을 전달할 위치를 결정합니다.
수신기에는 반드시 기본 규칙이 있어야 합니다. 기본 규칙은 다른 규칙과 일치하지 않을 때 적용되는 포괄적인 작업입니다. 수신기에는 기본 규칙 외에 최대 100개의 규칙을 추가할 수 있습니다. 규칙은 우선순위 순서로 평가되며 숫자가 낮을수록 우선순위가 높습니다. 요청이 규칙의 조건과 일치하면 해당 작업이 적용되고 이후 규칙은 더 이상 평가되지 않습니다.
# Create an HTTP listener on port 80
aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789:loadbalancer/app/my-alb/abc123 \
--protocol HTTP \
--port 80 \
--default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/default-tg/def456규칙 조건
수신기 규칙은 조건을 기준으로 요청과 일치 여부를 판단합니다. 하나의 규칙에 여러 조건을 결합할 수 있으며, 규칙이 적용되려면 모든 조건이 일치해야 합니다. 사용할 수 있는 조건 유형은 다음과 같습니다.
- 호스트 헤더:
HostHTTP 헤더와 일치합니다(예:api.example.com). - 경로 패턴: URL 경로와 일치합니다(예:
/api/*,/images/*.jpg). - HTTP 헤더: 모든 HTTP 헤더 이름 및 값 패턴과 일치합니다.
- HTTP 요청 메서드: HTTP 메서드와 일치합니다(GET, POST, DELETE 등).
- 쿼리 문자열: 쿼리 문자열의 키-값 쌍과 일치합니다.
- 소스 IP: 클라이언트 IP CIDR 범위와 일치합니다.
경로 기반 라우팅
경로 기반 라우팅은 URL 경로를 기준으로 요청을 서로 다른 대상 그룹으로 전달합니다. 이는 단일 ALB 뒤에 있는 마이크로서비스에 가장 일반적으로 사용되는 라우팅 패턴입니다. 하나의 ALB에 적용하는 규칙의 예는 다음과 같습니다.
- 경로가
/api/*→ 대상 그룹: api-service - 경로가
/images/*→ 대상 그룹: image-processor - 경로가
/admin/*→ 대상 그룹: admin-app - 기본값 → 대상 그룹: frontend-app
이를 통해 여러 로드 밸런서를 사용하지 않고도 하나의 ALB가 서로 다른 여러 서비스를 앞단에서 제공할 수 있으므로 비용과 DNS 복잡성을 줄일 수 있습니다.
# Create a path-based routing rule
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
--priority 10 \
--conditions Field=path-pattern,Values='/api/*' \
--actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/api-service/xyz789호스트 기반 라우팅
호스트 기반 라우팅은 HTTP Host 헤더를 기준으로 요청을 라우팅하여 하나의 ALB에서 여러 도메인 이름(가상 호스트)을 제공할 수 있게 합니다. 예는 다음과 같습니다.
- 호스트가
api.example.com→ api-service 대상 그룹 - 호스트가
admin.example.com→ admin-app 대상 그룹 - 호스트가
www.example.com→ frontend 대상 그룹
각 도메인 이름에는 동일한 ALB DNS 이름을 가리키는 CNAME 또는 ALIAS 레코드가 있지만, ALB는 호스트 헤더를 기준으로 각 요청을 적절한 백엔드로 라우팅합니다. 호스트 기반 라우팅은 멀티 테넌트 SaaS 또는 모놀리식 앱을 마이크로서비스로 분리하는 경우에 적합합니다.
# Create a host-based routing rule
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
--priority 5 \
--conditions '[{"Field":"host-header","HostHeaderConfig":{"Values":["api.example.com"]}}]' \
--actions '[{"Type":"forward","TargetGroupArn":"arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/api-service/xyz789"}]'규칙 작업
규칙의 조건이 일치하면 ALB는 다음 작업 중 하나를 실행합니다.
- 전달: 하나 이상의 대상 그룹으로 요청을 전달합니다(선택적으로 가중치를 적용할 수 있음).
- 리디렉션: 새 URL로 HTTP 리디렉션(301 또는 302)을 반환합니다. HTTP에서 HTTPS로 리디렉션할 때 유용합니다.
- 고정 응답: 지정된 상태 코드, 콘텐츠 유형 및 본문으로 정적인 HTTP 응답을 반환합니다. 유지 관리 페이지나 간단한 상태 확인 응답에 유용합니다.
- Cognito 인증: 전달하기 전에 Cognito 사용자 풀을 통해 사용자를 인증합니다.
- OIDC 인증: OIDC 호환 자격 증명 공급자를 통해 사용자를 인증합니다.
# Create a redirect rule: HTTP to HTTPS
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/http80 \
--priority 1 \
--conditions '[{"Field":"path-pattern","PathPatternConfig":{"Values":["/*"]}}]' \
--actions '[{"Type":"redirect","RedirectConfig":{"Protocol":"HTTPS","Port":"443","StatusCode":"HTTP_301"}}]'HTTP에서 HTTPS로 리디렉션하는 패턴
가장 일반적인 수신기 규칙 패턴은 HTTP를 HTTPS로 리디렉션하는 것입니다.
- 포트 80의 HTTP 수신기를 만들고, 하나의 규칙을 추가하여 모든 트래픽(
/*)을 상태 코드 301로 HTTPS에 리디렉션합니다. - 포트 443의 HTTPS 수신기를 만들고, 대상 그룹을 가리키는 실제 라우팅 규칙을 추가합니다.
이렇게 하면 사용자가 http://를 입력하거나 이전 HTTP 링크를 따라가도 애플리케이션 수준의 변경 없이 HTTPS로 투명하게 리디렉션됩니다. 리디렉션은 전적으로 로드 밸런서 계층에서 처리됩니다.
고정 응답 작업
고정 응답 작업은 요청을 어떤 대상에도 전달하지 않고 ALB에서 정적인 HTTP 응답을 반환합니다. 다음과 같은 용도로 사용할 수 있습니다.
- 유지 관리 중 특정 경로에 503 유지 관리 페이지 반환
- ALB에서 직접 가벼운 상태 확인 엔드포인트 제공(백엔드 오버헤드 없이 즉시 200 OK 반환)
- 403 Forbidden 응답으로 특정 경로 차단
수신기 규칙을 동적으로 조정하면 애플리케이션 코드를 수정하거나 다시 배포하지 않고도 경로를 일시적으로 서비스에서 제외할 수 있으므로 고정 응답이 유용합니다.
# Return 503 maintenance page for a specific path
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
--priority 20 \
--conditions '[{"Field":"path-pattern","PathPatternConfig":{"Values":["/checkout/*"]}}]' \
--actions '[{"Type":"fixed-response","FixedResponseConfig":{"StatusCode":"503","ContentType":"text/html","MessageBody":"<h1>Maintenance</h1>"}}]'Cognito를 사용한 ALB 인증
ALB의 Cognito 인증 작업은 Amazon Cognito 사용자 풀과 통합되어 애플리케이션으로 요청을 전달하기 전에 사용자 인증을 처리합니다. 인증되지 않은 사용자가 보호된 수신기 규칙에 도달하면 ALB는 로그인을 위해 Cognito 호스팅 UI로 사용자를 리디렉션합니다. 인증이 성공하면 ALB는 암호화된 쿠키를 설정하고 사용자 신원 헤더와 함께 요청을 전달합니다.
이렇게 하면 인증 로직을 애플리케이션에서 완전히 분리할 수 있습니다. 백엔드는 인증된 사용자의 클레임이 포함된 X-Amzn-Oidc-Identity, X-Amzn-Oidc-Data 및 X-Amzn-Oidc-Access-Token 헤더를 받습니다.
쿼리 문자열 및 헤더 기반 라우팅
ALB 수신기 규칙은 쿼리 문자열 매개변수와 HTTP 헤더를 기준으로 라우팅할 수 있으므로, 요청을 세밀하게 라우팅할 수 있습니다.
User-Agent: *Mobile*헤더를 감지하여 모바일 클라이언트를 모바일 최적화 백엔드로 라우팅- 사용자 지정
X-API-Tier: premium헤더를 확인하여 프리미엄 API 요청을 더 빠른 대상 그룹으로 라우팅 ?variant=beta쿼리 문자열 매개변수를 읽어 A/B 테스트 변형을 라우팅
헤더 기반 라우팅을 사용하면 애플리케이션 코드를 수정하지 않고도 인프라 계층에서 기능 플래그와 트래픽 분할을 구현할 수 있습니다.
규칙 우선순위 및 평가 순서
규칙은 우선순위가 낮은 순서대로 평가됩니다. 우선순위 숫자가 낮은 규칙부터 평가됩니다. 처음으로 일치하는 규칙의 작업이 적용되고 이후 규칙은 더 이상 평가되지 않습니다. 기본 규칙에는 우선순위 숫자가 없으며, 모든 요청을 처리하는 규칙으로 항상 마지막에 평가됩니다.
권장 사항: 우선순위 숫자를 순차적인 정수 대신 10 단위(10, 20, 30...)로 지정하십시오. 그러면 기존 규칙의 번호를 다시 지정하지 않고도 규칙 사이에 새 규칙을 삽입할 여유가 생깁니다. 더 구체적인 규칙(예: 경로 + 호스트 헤더)은 일반적인 규칙보다 숫자가 낮아야 합니다(우선순위가 높아야 합니다).
# List rules for a listener (shows priorities)
aws elbv2 describe-rules \
--listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
--query 'Rules[*].{Priority:Priority,Conditions:Conditions[0].Field,Actions:Actions[0].Type}' \
--output table마이크로서비스용 수신기 규칙
단일 ALB가 수신기 규칙을 사용하여 전체 마이크로서비스 플랫폼의 앞단 역할을 할 수 있습니다. 세 가지 조건 유형을 모두 조합한 실제 예시는 다음과 같습니다.
- 우선순위 10: 호스트=
api.example.com+ 경로=/v2/*→ api-v2 대상 그룹 - 우선순위 20: 호스트=
api.example.com+ 경로=/v1/*→ api-v1 대상 그룹 - 우선순위 30: 호스트=
auth.example.com→ auth-service 대상 그룹 - 우선순위 40: 호스트=
www.example.com+ 경로=/static/*→ CloudFront 리디렉션 - 기본값: 호스트=
www.example.com→ 프런트엔드 대상 그룹
이 설계를 사용하면 서비스마다 별도의 로드 밸런서가 필요하지 않으므로 비용을 줄일 수 있습니다.
빠른 확인
이 단원에서 다룬 AWS 솔루션스 아키텍트(SAA-C03) 개념에 대한 이해도를 확인해 보세요.
단원 요약
이 단원에서는 수신기 규칙이 호스트, 경로, 헤더, 메서드 및 쿼리 문자열을 기준으로 요청을 라우팅한다는 것, 규칙은 우선순위 순서대로 평가되며 처음 일치하는 규칙이 적용된다는 것, 그리고 작업에는 전달, 리디렉션, 고정 응답 및 Cognito 인증이 포함된다는 것을 배웠습니다. 경로 및 호스트 기반 라우팅을 사용하면 단일 ALB가 여러 마이크로서비스의 앞단 역할을 할 수 있습니다. 다음에는 SSL 종료와 고정 세션을 살펴봅니다.
자주 묻는 질문
“리스너 규칙 및 경로 기반 라우팅” 강의는 무료인가요?
네 — “리스너 규칙 및 경로 기반 라우팅” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“리스너 규칙 및 경로 기반 라우팅”에서 뭘 배우나요?
ALB에 리스너 규칙을 작성하여 호스트 헤더, 경로 패턴 또는 쿼리 문자열을 기준으로 요청을 서로 다른 대상 그룹으로 라우팅합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“리스너 규칙 및 경로 기반 라우팅” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- ALB, NLB 및 GLB 비교: 무엇을 언제 사용할까요?
- 대상 그룹 및 상태 확인
- 리스너 규칙 및 경로 기반 라우팅
- SSL 종료 및 고정 세션