Front Door와 Application Gateway를 함께 쓰면 Front Door가 글로벌 분산, 캐시, 엣지 WAF를 맡고 Application Gateway가 리전 안 경로 라우팅과 VNet 백엔드 연결을 맡습니다. 연동에서 가장 중요한 것은 두 가지로, Application Gateway를 Front Door만 들어올 수 있게 잠그는 것과 원래 호스트 이름(Host 헤더)을 끝까지 유지하는 것입니다. 원본 잠금은 Premium의 Private Link가 가장 깔끔하고, Standard라면 서비스 태그와 X-Azure-FDID 헤더 검사를 함께 씁니다.
1. 왜 함께 쓰나
Front Door만으로도 여러 리전의 App Service 같은 PaaS 원본은 충분히 연결할 수 있습니다. 하지만 백엔드가 VNet 안의 VM이나 AKS라면 리전마다 요청을 받아 경로별로 나눠 줄 L7 입구가 필요하고, 그 역할을 Application Gateway가 맡습니다. 부하 분산 서비스 비교에서 정리한 조합 중 실무에서 가장 많이 쓰는 형태입니다.
| 역할 | Front Door | Application Gateway |
| 위치 | 전 세계 엣지 | 리전, VNet 안 |
| 분산 범위 | 리전 간(원본 = 각 리전의 Application Gateway) | 리전 안 VM, AKS, 내부 서비스 |
| TLS | 사용자 연결 종료, 원본으로 다시 HTTPS | Front Door 연결 종료, 백엔드로 HTTP 또는 HTTPS |
| WAF | 공통 규칙, 속도 제한, 봇, 국가 제한 | 리전 안 사이트·경로별 추가 규칙(선택) |
| 캐시 | 정적 콘텐츠 캐시 | 없음 |
2. 권장 구성: Private Link

Front Door Premium이 Private Link로 Application Gateway에 연결하고, Application Gateway가 VNet 안의 웹 서버로 나눠 주는 구성
Front Door Premium은 Application Gateway를 Private Link 원본으로 지원합니다. Application Gateway에 Private Link 구성을 추가하면 Front Door가 관리하는 네트워크에서 사설 엔드포인트 연결 요청이 들어오고, 이를 승인하면 트래픽이 인터넷을 거치지 않고 Application Gateway로 들어옵니다. 여기에 Application Gateway 서브넷 NSG에서 인터넷 인바운드 443을 막으면 Front Door 외의 입구가 사라져, 헤더 검사 없이도 원본 우회를 막을 수 있습니다.
| 항목 | 조건 |
| Front Door | Premium 계층 |
| Application Gateway | Standard_v2 또는 WAF_v2 |
| Private Link 구성 | Application Gateway 서브넷과 다른 별도 서브넷 필요 |
| 연결 승인 | 원본(Application Gateway) 쪽에서 사설 엔드포인트 연결을 승인 |
| 원본 그룹 | 같은 원본 그룹에 공용 원본과 Private Link 원본을 섞을 수 없음 |
| 리전 | Private Link 지원 리전(한국 중부, 일본 동부 포함) |
3. 공용 원본으로 연결할 때
Front Door Standard를 쓰거나 Private Link를 쓸 수 없다면 Application Gateway의 공인 IP를 원본으로 둡니다. 이때는 공격자가 Application Gateway 공인 IP로 직접 들어와 Front Door WAF를 우회하지 못하게 두 겹으로 막습니다.
| 잠금 | 위치 | 설정 |
| 출발지 IP 제한 | Application Gateway 서브넷 NSG | 443 인바운드를 AzureFrontDoor.Backend 서비스 태그만 허용 GatewayManager 65200-65535, AzureLoadBalancer 허용은 유지 |
| 내 Front Door 확인 | Application Gateway WAF 사용자 지정 규칙 | X-Azure-FDID 헤더가 내 Front Door ID와 다르면 Block |
서비스 태그는 모든 고객의 Front Door가 공유하는 대역이라 NSG만으로는 다른 사람이 만든 Front Door를 통한 접근을 막지 못합니다. 그래서 헤더 검사를 반드시 함께 둡니다.
4. 호스트 이름 유지

사용자가 접속한 Host(www.1nfra.kr)를 Front Door, Application Gateway, 백엔드까지 바꾸지 않고 전달하는 설정
연동에서 가장 흔한 문제는 중간에 Host 헤더가 바뀌는 것입니다. Front Door나 Application Gateway가 Host를 원본 주소(agw-web.koreacentral.cloudapp.azure.com, app.azurewebsites.net 등)로 바꿔 보내면 백엔드가 만드는 리디렉션 URL과 쿠키 도메인이 내부 주소로 바뀌고, 로그인 후 돌아올 주소가 맞지 않아 인증이 깨집니다.
Microsoft 아키텍처 센터도 원래 호스트 이름을 끝까지 유지하는 구성을 권장합니다. Front Door는 원본 호스트 헤더를 비워 두어 사용자가 보낸 Host를 그대로 넘기고, Application Gateway는 다중 사이트 리스너로 www.1nfra.kr을 받고 백엔드 설정에서 호스트 이름 재정의를 끕니다. Application Gateway 리스너에는 www.1nfra.kr 인증서가 있어야 Front Door의 HTTPS 원본 인증서 검증도 통과합니다.
5. WAF와 클라이언트 IP
WAF는 Front Door에 두는 것이 기본입니다. Application Gateway가 받는 요청의 출발지 IP는 사용자 IP가 아니라 Front Door의 IP이므로, Application Gateway WAF에서 RemoteAddr 기준으로 국가나 IP를 막는 규칙은 의도대로 동작하지 않습니다. 국가 제한, IP 차단, 속도 제한은 Front Door WAF에서 처리하고, Application Gateway WAF는 X-Azure-FDID 검사처럼 리전 안에서만 필요한 규칙에 씁니다. WAF 규칙 구성은 Azure WAF 정책과 규칙 정리에서 다뤘습니다.
백엔드 애플리케이션에서 실제 사용자 IP가 필요하면 Front Door가 붙이는 X-Azure-ClientIP 헤더나 X-Forwarded-For의 첫 번째 값을 쓰고, 애플리케이션 프레임워크에서 Front Door와 Application Gateway를 신뢰할 프록시로 지정합니다.
6. Azure CLI로 만들어 보기
6.1 Private Link로 연결
RG=rg-web
# Application Gateway 서브넷과 다른 Private Link 전용 서브넷
az network vnet subnet create --resource-group $RG --vnet-name vnet-app \
--name snet-agw-pl --address-prefixes 10.1.3.0/27 \
--private-link-service-network-policies Disabled
az network application-gateway private-link add --resource-group $RG \
--gateway-name agw-web --name pl-agw --frontend-ip appGatewayFrontendIP \
--vnet-name vnet-app --subnet snet-agw-pl
# Front Door 원본: 원본 호스트 헤더를 지정하지 않아 원래 Host 유지
AGW_ID=$(az network application-gateway show --resource-group $RG \
--name agw-web --query id -o tsv)
AGW_IP=$(az network public-ip show --resource-group $RG --name pip-agw \
--query ipAddress -o tsv)
az afd origin create --resource-group $RG --profile-name afd-web \
--origin-group-name og-web --origin-name agw-krc \
--host-name $AGW_IP --priority 1 --weight 50 --enabled-state Enabled \
--http-port 80 --https-port 443 \
--enable-private-link true --private-link-resource $AGW_ID \
--private-link-location koreacentral \
--private-link-sub-resource-type appGatewayFrontendIP \
--private-link-request-message "afd-web"
명령을 실행하면 Application Gateway의 Private Link 메뉴에 대기 중인 사설 엔드포인트 연결이 생깁니다. 포털에서 승인하고 몇 분 기다린 뒤 Front Door 엔드포인트로 접속해 응답이 오는지 확인합니다.
6.2 공용 원본 잠금
# 443은 Front Door 대역에서만
az network nsg rule create --resource-group $RG --nsg-name nsg-agw \
--name Allow-AFD-443 --priority 100 --direction Inbound --access Allow \
--protocol Tcp --source-address-prefixes AzureFrontDoor.Backend \
--destination-port-ranges 443
# 내 Front Door ID가 아니면 차단
FDID=$(az afd profile show --resource-group $RG --profile-name afd-web \
--query frontDoorId -o tsv)
WP="--resource-group $RG --policy-name wafpol-agw"
az network application-gateway waf-policy custom-rule create $WP \
--name AllowOnlyMyAFD --priority 5 --rule-type MatchRule --action Block
az network application-gateway waf-policy custom-rule match-condition add $WP \
--name AllowOnlyMyAFD --match-variables RequestHeaders.X-Azure-FDID \
--operator Equal --values $FDID --negate true
설정 후 Application Gateway 공인 IP로 직접 요청하면 연결이 막히거나 403이 돌아오고, Front Door 주소로는 정상 응답이 오면 됩니다.
7. 운영 시 주의점
| 증상·항목 | 확인할 것 |
| 로그인 후 내부 주소로 이동 | Front Door 원본 호스트 헤더, Application Gateway 호스트 이름 재정의가 Host를 바꾸고 있는지 확인합니다. |
| Front Door 원본 비정상 | Application Gateway 리스너가 Front Door 프로브의 Host와 경로를 받는지, 인증서 이름이 맞는지 확인합니다. |
| Private Link 연결 대기 | Application Gateway 쪽에서 연결 승인을 했는지 확인합니다. 승인 전에는 요청이 실패합니다. |
| IP 기반 WAF 규칙 | Application Gateway에서는 출발지가 Front Door IP입니다. IP, 국가 규칙은 Front Door에 둡니다. |
| 캐시와 동적 페이지 | 로그인 이후 페이지나 API 경로는 Front Door 캐시를 끄거나 no-store 헤더를 줍니다. |
| 타임아웃 | 긴 요청은 Front Door 원본 응답 시간 제한과 Application Gateway 백엔드 요청 시간 제한을 함께 늘려야 합니다. |
8. 정리
- Front Door는 글로벌 분산, 캐시, 엣지 WAF를, Application Gateway는 리전 안 L7 라우팅과 VNet 백엔드 연결을 맡습니다.
- 원본 잠금은 Premium의 Private Link가 가장 깔끔하고, 공용 원본이라면 AzureFrontDoor.Backend 서비스 태그와 X-Azure-FDID 검사를 함께 씁니다.
- Host 헤더는 끝까지 유지하고, IP·국가 기반 WAF 규칙은 사용자 IP가 보이는 Front Door에 둡니다.
참고
'Cloud > Azure' 카테고리의 다른 글
| [Azure] Virtual Machine Scale Sets 정리 (0) | 2026.09.25 |
|---|---|
| [Azure] Azure 부하 분산 서비스 비교 (0) | 2026.09.25 |
| [Azure] Azure WAF 정책과 규칙 정리 (0) | 2026.09.25 |
| [Azure] Traffic Manager 정리 (0) | 2026.09.25 |
| [Azure] Azure Front Door 정리 (0) | 2026.09.25 |