본문 바로가기
CLOUD/AZURE

Azure Application Gateway에서 HostName 중복과 Any Host 리스너 동작 원리

by Rainbound-IT 2025. 8. 10.
반응형

목차

     

     

     

    이번 포스팅에서는 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을 가지고 있었음.
    • 즉, 리스너가 두 개 있었음:
      1. allow 리스너 → HostName = file1.example.com
      2. 다른 리스너 → 규칙에서 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 사례 분석

    이번 케이스에서 통신이 된 이유는 다음과 같습니다.

    1. DNS 단계
      • file1.example.com → AGW Public IP 매핑
    2. 리스너 매칭
      • AGW는 요청의 Host 헤더를 확인
      • allow 리스너가 HostName file1.example.com을 정확히 매칭
      • Any Host 리스너가 아닌 정확 매칭 리스너가 선택됨
    3. 규칙 처리
      • 선택된 리스너의 규칙(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이 빈 값인지 확인하는 방법

    1. Application Gateway → Listeners 메뉴 진입
    2. 각 리스너 클릭 → Host name 필드 확인
      • 비어있으면 Any Host 리스너
      • 값이 있으면 특정 Host 리스너
    반응형

    댓글