Network & Server Factory

개인 공부 기록

Cloud/Azure

[Azure] Application Gateway 정리

1nfra 2026. 9. 25. 13:58
Application Gateway는 HTTP 요청의 호스트 이름과 URL 경로를 보고 백엔드를 고르는 리전 단위 L7 부하 분산기입니다. TLS 종료, 경로 기반 라우팅, 헤더 재작성, WAF를 한곳에서 처리하고, 전용 서브넷 안에서 v2 SKU로 자동 크기 조정됩니다. v1 SKU는 2026년 4월 28일에 종료되어 지금은 Standard_v2 또는 WAF_v2를 씁니다.

1. Application Gateway란

앞 글에서 정리한 Azure Load Balancer는 IP와 포트만 보고 패킷을 넘기는 L4 부하 분산기였습니다. Application Gateway는 클라이언트의 HTTP(S) 연결을 직접 받아 요청 내용을 읽은 뒤, 조건에 맞는 백엔드로 새 연결을 맺어 전달하는 리버스 프록시입니다. 온프레미스의 L7 스위치나 Nginx, HAProxy 같은 리버스 프록시와 같은 위치에 둡니다.

 

예를 들어 같은 도메인에서 /api/* 요청은 API 서버로, 나머지는 웹 서버로 보내거나, 하나의 공인 IP로 여러 도메인의 사이트를 운영할 수 있습니다. 리전 단위 서비스라 여러 리전에 걸친 분산이 필요하면 Front Door나 Traffic Manager를 앞에 둡니다.

2. 구성 요소

HTTPS 리스너로 받은 요청을 경로 기반 규칙에 따라 /api/*는 pool-api로, 나머지는 pool-web으로 보내는 구성

 

구성 요소 역할
프런트엔드 IP 공인 IP, 사설 IP 또는 둘 다 둘 수 있습니다. v2는 고정 IP를 씁니다.
리스너 프로토콜, 포트, 호스트 이름으로 요청을 받습니다.
기본: 도메인 하나
다중 사이트: 호스트 이름별로 구분
라우팅 규칙 리스너와 백엔드를 연결합니다.
기본: 모든 요청을 한 풀로
경로 기반: URL 경로별로 다른 풀로
백엔드 풀 VM, VMSS, IP, FQDN, App Service, 온프레미스 서버 등 요청을 받을 대상입니다.
백엔드 설정 백엔드로 보낼 프로토콜, 포트, 호스트 헤더, 쿠키 기반 세션 선호도, 연결 드레이닝을 정합니다.
상태 프로브 기본 프로브는 백엔드 설정의 포트로 30초마다 확인하고, 200~399 응답을 정상으로 봅니다. 경로나 상태 코드를 바꾸려면 사용자 지정 프로브를 만듭니다.
재작성, 리디렉션 요청·응답 헤더와 URL을 바꾸거나 HTTP를 HTTPS로 넘깁니다.

3. TLS 종료와 WAF

Key Vault의 인증서로 TLS를 종료하고 WAF 검사를 마친 뒤, 백엔드로 다시 암호화해 보내는 종단 간 TLS 구성

 

HTTPS 리스너에 인증서를 붙이면 Application Gateway가 TLS를 종료하고 요청 내용을 볼 수 있게 됩니다. 경로 기반 라우팅, 헤더 재작성, WAF 검사가 모두 이 복호화 이후에 동작합니다. 인증서는 직접 업로드할 수도 있지만 Key Vault에 두고 관리 ID로 참조하면 갱신된 인증서를 자동으로 가져옵니다.

 

백엔드까지 암호화가 필요하면 백엔드 설정의 프로토콜을 HTTPS로 바꿔 종단 간 TLS로 구성합니다. 이때 백엔드 인증서의 이름과 호스트 헤더가 맞지 않으면 백엔드 상태가 비정상으로 나오므로, 호스트 이름 재정의 설정을 함께 확인합니다. WAF 정책과 감지·방지 모드는 Azure Firewall, NSG, WAF 역할 정리에서 다뤘습니다.

4. 서브넷과 네트워크 요구 사항

Application Gateway는 전용 서브넷이 필요하고, 그 서브넷에는 다른 리소스를 둘 수 없습니다. v2는 인스턴스가 최대 125개까지 늘어나고 인스턴스마다 사설 IP를 하나씩 쓰므로 /24를 권장합니다.

 

항목 v2 요구 사항
서브넷 전용 서브넷, /24 권장
NSG 인바운드 클라이언트 → 리스너 포트(80, 443 등)
GatewayManager → 65200-65535
AzureLoadBalancer 허용
NSG 아웃바운드 인터넷 아웃바운드를 막으면 안 됩니다.
UDR 0.0.0.0/0을 방화벽이나 온프레미스로 보내는 강제 터널링은 지원하지 않습니다.

Hub-Spoke에서 모든 서브넷에 0.0.0.0/0 → 방화벽 UDR을 일괄 적용하다가 Application Gateway 서브넷까지 포함시키면 백엔드 상태가 Unknown으로 나오고 로그가 끊길 수 있습니다. Application Gateway 서브넷은 예외로 빼 둡니다.

5. SKU와 자동 크기 조정

SKU 특징
Standard_v2 자동 크기 조정, 영역 중복, 고정 VIP, 헤더 재작성, Key Vault 인증서
WAF_v2 Standard_v2 기능에 WAF 정책(관리 규칙, 사용자 지정 규칙)
Standard, WAF(v1) 2026년 4월 28일 종료. 남아 있다면 v2로 옮깁니다.

v2는 최소·최대 인스턴스 수를 정해 두면 트래픽에 따라 자동으로 늘고 줄어듭니다. 인스턴스를 새로 띄우는 데 몇 분이 걸리므로, 평소 트래픽을 감당할 최소 인스턴스는 미리 잡아 두는 편이 안전합니다.

6. Azure CLI로 만들어 보기

6.1 Application Gateway 만들기

RG=rg-web
az network vnet subnet create --resource-group $RG --vnet-name vnet-app \
  --name snet-agw --address-prefixes 10.1.0.0/24

az network public-ip create --resource-group $RG --name pip-agw \
  --sku Standard --zone 1 2 3

# 기본 풀에 웹 서버 2대, 자동 크기 조정 2~10
az network application-gateway create --resource-group $RG --name agw-web \
  --sku Standard_v2 --min-capacity 2 --max-capacity 10 --zones 1 2 3 \
  --vnet-name vnet-app --subnet snet-agw --public-ip-address pip-agw \
  --servers 10.1.1.4 10.1.1.5 --priority 100

6.2 경로 기반 규칙과 프로브

AGW="--resource-group $RG --gateway-name agw-web"
az network application-gateway address-pool create $AGW \
  --name pool-api --servers 10.1.2.4 10.1.2.5

# /api/* 는 pool-api, 나머지는 기본 풀
az network application-gateway url-path-map create $AGW --name pm-web \
  --paths "/api/*" --address-pool pool-api \
  --http-settings appGatewayBackendHttpSettings \
  --default-address-pool appGatewayBackendPool \
  --default-http-settings appGatewayBackendHttpSettings

az network application-gateway rule update $AGW --name rule1 \
  --rule-type PathBasedRouting --url-path-map pm-web

# /health 가 200을 돌려주는지 확인하는 사용자 지정 프로브
az network application-gateway probe create $AGW --name hp-web \
  --protocol Http --path /health --host-name-from-http-settings true
az network application-gateway http-settings update $AGW \
  --name appGatewayBackendHttpSettings --probe hp-web \
  --host-name-from-backend-pool true

rule1, appGatewayBackendPool, appGatewayBackendHttpSettings는 create 명령이 기본으로 만드는 이름입니다. 적용 후 포털의 백엔드 상태에서 모든 서버가 정상인지 확인합니다.

7. 운영 시 주의점

증상·항목 확인할 것
502 Bad Gateway 대부분 백엔드가 비정상인 경우입니다. 백엔드 상태에서 프로브 실패 원인(NSG, 포트, 상태 코드)을 먼저 봅니다.
프로브 상태 코드 기본 프로브는 200~399만 정상입니다. 로그인 페이지가 401을 돌려주면 사용자 지정 프로브에서 허용 코드를 지정합니다.
호스트 헤더 App Service처럼 호스트 이름으로 사이트를 구분하는 백엔드는 호스트 이름 재정의를 설정해야 합니다.
서브넷 크기 생성 후 서브넷을 줄이기 어렵습니다. 처음부터 /24로 잡습니다.
강제 터널링 Application Gateway 서브넷에는 0.0.0.0/0 → 방화벽 UDR을 붙이지 않습니다.

8. 정리

  • Application Gateway는 호스트 이름과 URL 경로로 백엔드를 고르는 리전 단위 L7 리버스 프록시입니다.
  • 리스너, 규칙, 백엔드 풀, 백엔드 설정, 프로브가 기본 구성이고, TLS를 종료해야 경로 라우팅과 WAF가 동작합니다.
  • 전용 /24 서브넷, GatewayManager 포트 허용, 강제 터널링 제외, v2 SKU 사용을 기본으로 챙깁니다.

참고

728x90

'Cloud > Azure' 카테고리의 다른 글

[Azure] Traffic Manager 정리  (0) 2026.09.25
[Azure] Azure Front Door 정리  (0) 2026.09.25
[Azure] Azure Load Balancer 정리  (0) 2026.09.25
[Azure] Hub-Spoke와 Virtual WAN 비교  (0) 2026.09.25
[Azure] Azure Landing Zone 기본 구조 정리  (0) 2026.09.24
서울
--:--:--
-전체 글
-카테고리
오늘 방문