반응형
목차
이번 포스팅에서는 Azure Application Gateway(AGW)에서
- 동일한 HostName을 가진 리스너가 여러 개 있을 수 있는지
- Any Host(HostName이 비어있는 리스너)의 역할
- 실제 file1.example.com 케이스에서 왜 통신이 정상 동작했는지
를 정리합니다.
1. 문제 상황
- DNS에서 file1.example.com → AGW Public IP를 가리키고 있었음.
- AGW 리스너 중 하나(Listener A)의 규칙(Rule)에서 Backend Target이 다시 file1.example.com을 참조하는 형태였음.
- HostName을 전체 검색해 보니, allow 리스너가 file1.example.com HostName을 가지고 있었음.
- 즉, 리스너가 두 개 있었음:
- allow 리스너 → HostName = file1.example.com
- 다른 리스너 → 규칙에서 Backend를 file1.example.com으로 지정
이 상황에서도 요청이 정상적으로 Backend VM으로 전달되고 있었음.
2. HostName 중복 허용 여부
Azure Application Gateway의 리스너 매칭 규칙은 다음과 같습니다.
| 케이스 | HostName | 포트 | 프로토콜 | 동작 여부 |
| 완전 동일 | 동일 | 동일 | 동일 | ❌ 불가 (Conflict) |
| HostName 동일, 포트 다름 | 동일 | 다름 | 동일 | ✅ 가능 |
| HostName 동일, 프로토콜 다름 | 동일 | 동일 | HTTP/HTTPS 다름 | ✅ 가능 |
| 하나는 Any Host, 하나는 특정 Host | 빈 값 / 특정 | 동일 | 동일 | ✅ 가능, 특정 Host가 우선 매칭 |
3. Any Host(HostName이 빈 값) 리스너의 특징
- 특정 HostName이 없는 리스너는 “모든 Host” 요청을 받음.
- 하지만 정확히 HostName이 일치하는 리스너가 있으면 해당 리스너가 우선 매칭.
- Any Host 리스너는 사실상 Fallback 역할을 함.
4. file1.example.com 사례 분석
이번 케이스에서 통신이 된 이유는 다음과 같습니다.
- DNS 단계
- file1.example.com → AGW Public IP 매핑
- 리스너 매칭
- AGW는 요청의 Host 헤더를 확인
- allow 리스너가 HostName file1.example.com을 정확히 매칭
- Any Host 리스너가 아닌 정확 매칭 리스너가 선택됨
- 규칙 처리
- 선택된 리스너의 규칙(Rule)에서 Backend Target을 지정
- 이 Backend는 IP/FQDN 기반의 VM 또는 Backend Pool
즉, file1.example.com 요청은 “allow 리스너”로 매칭 → 해당 규칙을 통해 Backend로 전달 → Backend 주소 역시 file1.example.com이었으나, 이는 AGW 내부에서 다시 DNS Resolve → 실제 VM IP로 라우팅.
5. "왜 굳이 allow 리스너를 만들었을까?"
가능한 이유:
- 동일한 HostName을 여러 리스너 규칙에서 재활용하기 위해 (Path 규칙 분리 목적)
- 멀티도메인/서브도메인 설계를 단순화하려고 와일드카드 대신 특정 HostName 리스너를 만든 경우
- 초기 구성 시 Any Host로 쓰던 것을 이후 특정 도메인으로 제한하려고 분리했으나 기존 규칙 구조를 유지한 경우
6. 정리
- 동일 HostName + 동일 포트/프로토콜 조합은 AGW에서 불가능.
- 하지만 Any Host + 특정 Host 조합은 가능하며, 특정 Host 리스너가 우선.
- Backend Target이 다시 같은 HostName을 가리키는 경우에도, AGW는 내부 DNS Resolve를 통해 실제 VM IP를 찾아 전달 가능.
- 설계 단계에서 Any Host와 특정 Host 리스너가 혼재하면, 운영자가 구조를 헷갈릴 수 있으므로 문서화가 필수.
📌 팁
Azure Portal에서 리스너 HostName이 빈 값인지 확인하는 방법
- Application Gateway → Listeners 메뉴 진입
- 각 리스너 클릭 → Host name 필드 확인
- 비어있으면 Any Host 리스너
- 값이 있으면 특정 Host 리스너
반응형
'CLOUD > AZURE' 카테고리의 다른 글
| Azure App Registrations (0) | 2025.10.27 |
|---|---|
| Azure Service Principal 생성 및 환경 변수 설정 가이드 (3) | 2025.08.14 |
| Azure VPN 환경에서 Web 앱 로그인 오류 분석기 — "400 invalid id" 원인과 해결 과정 (0) | 2025.07.30 |
| Azure storage account fileshare SMB 접속 방법 (0) | 2025.07.23 |
| azure action groups (0) | 2025.07.14 |
댓글