다음을 통해 공유


자습서: Azure CLI를 사용하여 Azure Front Door 표준/프리미엄(미리 보기)에 대한 배달 규칙 추가 및 사용자 지정

Azure Front Door 표준/프리미엄(미리 보기)은 빠르고 안전한 최신 클라우드 CDN입니다. Azure Front Door는 Microsoft 글로벌 경계 네트워크를 사용하며 인텔리전트 위협 보호 기능과 통합됩니다. Azure Front Door 표준은 콘텐츠 배달에 중점을 두고, Azure Front Door 프리미엄은 광범위한 보안 기능과 사용자 지정 기능을 추가합니다. 이 자습서에서는 Azure Front Door 프로필을 만든 다음 웹앱 동작을 보다 세부적으로 제어하기 위한 배달 규칙을 추가하는 데 초점을 맞춥니다.

참고 항목

이 설명서는 Azure Front Door 표준/프리미엄(미리 보기)용입니다. Azure Front Door에 대한 정보를 찾고 있나요? Azure Front Door 문서를 참조하세요.

이 자습서에서는 다음 작업을 수행하는 방법을 알아봅니다.

  • Azure Front Door 프로필 만들기
  • 웹앱의 두 인스턴스 만들기
  • 새 보안 정책 만들기
  • 웹앱에 대한 연결 확인
  • 규칙 집합 만들기
  • 규칙을 만들어 규칙 집합에 추가
  • 규칙에 작업 또는 조건 추가

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

필수 조건

Azure Front Door 만들기

리소스 그룹 만들기

이 빠른 시작에서는 두 개의 리소스 그룹이 필요합니다. 하나는 미국 중부에, 다른 하나는 미국 동부에 있습니다.

az group create를 실행하여 리소스 그룹을 만듭니다.

az group create \
    --name myRGFDCentral \
    --location centralus

az group create \
    --name myRGFDEast \
    --location eastus

Azure Front Door 프로필 만들기

az afd profile create를 실행하여 Azure Front Door 프로필을 만듭니다.

az afd profile create \
    --profile-name contosoafd \
    --resource-group myRGFDCentral \
    --sku Premium_AzureFrontDoor \
    --subscription mysubscription

웹앱의 두 인스턴스 만들기

이 자습서의 경우 서로 다른 Azure 지역에서 실행되는 웹 애플리케이션의 인스턴스가 두 개 필요합니다. 두 웹 애플리케이션 인스턴스는 모두 활성/활성 모드로 실행되므로 두 인스턴스 중 하나에서 트래픽을 서비스할 수 있습니다.

웹앱이 아직 없는 경우 다음 스크립트를 사용하여 두 가지 예제 웹앱을 설정합니다.

앱 서비스 계획 만들기

웹앱을 만들려면 먼저 하나는 미국 중부에, 다른 하나는 미국 동부에 있는 두 개의 앱 서비스 요금제가 필요합니다.

az appservice plan create를 실행하여 앱 서비스 요금제를 만듭니다.

az appservice plan create \
    --name myAppServicePlanCentralUS \
    --resource-group myRGFDCentral

az appservice plan create \
    --name myAppServicePlanEastUS \
    --resource-group myRGFDEast

웹앱 만들기

az webapp create를 실행하여 이전 단계의 각 앱 서비스 요금제에서 웹앱을 만듭니다. 웹앱 이름은 전역적으로 고유해야 합니다.

az webapp list-runtimes를 실행하여 웹앱에 대한 기본 제공 스택 목록을 확인합니다.

az webapp create \
    --name WebAppContoso-001 \
    --resource-group myRGFDCentral \
    --plan myAppServicePlanCentralUS \
    --runtime "DOTNETCORE|2.1"

az webapp create \
    --name WebAppContoso-002 \
    --resource-group myRGFDEast \
    --plan myAppServicePlanEastUS \
    --runtime "DOTNETCORE|2.1"

다음 단계에서 Front Door를 배포할 때 백 엔드 주소를 정의할 수 있도록 각 웹앱의 기본 호스트 이름을 적어 둡니다.

엔드포인트 추가

az afd endpoint create를 실행하여 프로필에 엔드포인트를 만듭니다. 환경 만들기를 완료하면 프로필에서 엔드포인트를 여러 개 만들 수 있습니다.

az afd endpoint create \
    --resource-group myRGFDCentral \
    --endpoint-name contoso-frontend \
    --profile-name contosoafd \
    --origin-response-timeout-seconds 60 \
    --enabled-state Enabled

원본 그룹 만들기

az afd origin-group create를 실행하여 두 개의 웹앱을 포함하는 원본 그룹을 만듭니다.

az afd origin-group create \
    --resource-group myRGFDCentral \
    --origin-group-name og1 \
    --profile-name contosoafd \
    --probe-request-type GET \
    --probe-protocol Http \
    --probe-interval-in-seconds 120 \
    --probe-path /test1/azure.txt \
    --sample-size 4 \
    --successful-samples-required 3 \
    --additional-latency-in-milliseconds 50

그룹에 원본 추가

az afd origin create를 실행하여 원본 그룹에 원본을 추가합니다.

az afd origin create \
    --resource-group myRGFDCentral \
    --host-name webappcontoso-1.azurewebsites.net
    --profile-name contosoafd \
    --origin-group-name og1 \
    --origin-name contoso1 \
    --origin-host-header webappcontoso-1.azurewebsites.net \
    --priority 1 \
    --weight 1000 \
    --enabled-state Enabled \
    --http-port 80 \
    --https-port 443

이 단계를 반복하고 두 번째 원본을 추가합니다.

az afd origin create \
    --resource-group myRGFDCentral \
    --host-name webappcontoso-2.azurewebsites.net
    --profile-name contosoafd \
    --origin-group-name og1 \
    --origin-name contoso2 \
    --origin-host-header webappcontoso-2.azurewebsites.net \
    --priority 1 \
    --weight 1000 \
    --enabled-state Enabled \
    --http-port 80 \
    --https-port 443

경로 추가

az afd route create를 실행하여 프런트 엔드 엔드포인트를 원본 그룹에 매핑합니다. 이 경로는 엔드포인트에서 og1로 요청을 전달합니다.

az afd route create \
    --resource-group myRGFDCentral \
    --endpoint-name contoso-frontend \
    --profile-name contosoafd \
    --route-name route1 \
    --https-redirect Enabled \
    --origin-group og1 \
    --supported-protocols Https \
    --link-to-default-domain Enabled \
    --forwarding-protocol MatchRequest

새 보안 정책 만들기

WAF 정책 만들기

az network front-door waf-policy create를 실행하여 리소스 그룹 중 하나에 대한 WAF 정책을 만듭니다.

Front Door에 대한 새로운 WAF 정책을 만듭니다. 이 예제에서는 사용/방지 모드에 있는 정책을 만듭니다.

az network front-door waf-policy create
    --name contosoWAF /
    --resource-group myRGFDCentral /
    --sku Premium_AzureFrontDoor
    --disabled false /
    --mode Prevention

참고 항목

Detection 모드를 선택하면 WAF에서 요청을 차단하지 않습니다.

보안 정책 만들기

az afd security-policy create를 실행하여 엔드포인트의 기본 도메인에 WAF 정책을 적용합니다.

az afd security-policy create \
    --resource-group myRGFDCentral \
    --profile-name contosoafd \
    --security-policy-name contososecurity \
    --domains /subscriptions/mysubscription/resourcegroups/myRGFDCentral/providers/Microsoft.Cdn/profiles/contosoafd/afdEndpoints/contoso-frontend.z01.azurefd.net \
    --waf-policy /subscriptions/mysubscription/resourcegroups/myRGFDCentral/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/contosoWAF

Azure Front Door 확인

Azure Front Door 표준/프리미엄 프로필을 만들 때 구성이 전역적으로 배포되는 데 몇 분 정도 걸립니다. 완료되면 앞서 만든 프런트 엔드 호스트에 액세스할 수 있습니다. 브라우저에서 contoso-frontend.z01.azurefd.net으로 이동합니다. 원본 그룹에 지정된 서버와 가장 가까운 서버로 요청이 자동 라우팅됩니다.

즉각적인 글로벌 장애 조치(failover)를 테스트하기 위해 다음 단계를 수행합니다.

  1. 위에서 설명한 대로 브라우저를 열고, 프런트 엔드 주소(contoso-frontend.azurefd.net)로 이동합니다.

  2. Azure Portal에서 앱 서비스를 검색하여 선택합니다. 아래로 스크롤하여 웹앱 중 하나(이 예에서는 WebAppContoso-1)를 찾습니다.

  3. 웹앱을 선택한 다음, 중지, 를 차례로 선택하여 확인합니다.

  4. 브라우저를 새로 고칩니다. 동일한 정보 페이지가 표시됩니다.

    이러한 작업에는 약간의 지연이 있습니다. 다시 새로 고쳐야 할 수도 있습니다.

  5. 다른 웹앱도 찾아서 중지합니다.

  6. 브라우저를 새로 고칩니다. 이번에는 오류 메시지가 표시됩니다.

    웹앱의 두 인스턴스가 모두 중지됨

규칙 집합 만들기

에지에서 HTTP 요청을 처리하는 방법을 사용자 지정하는 규칙 집합을 만듭니다. 규칙 집합에 추가된 배달 규칙은 웹 애플리케이션 동작에 대한 제어 기능을 더 많이 제공합니다. az afd rule-set create를 실행하여 Azure Front Door 프로필에 규칙 집합을 만듭니다.

az afd rule-set create \
    --profile-name contosoafd \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules

배달 규칙을 만들어 규칙 집합에 추가

규칙 집합 내에 새로운 배달 규칙을 만듭니다. az afd rule create를 실행하여 규칙 집합에 배달 규칙을 만듭니다. 이 예제에서는 http에서 https로 리디렉션되는 경우에 대한 규칙을 만듭니다.

az afd rule create \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules \
    --profile-name contosoafd \
    --order 1 \
    --match-variable RequestScheme \
    --operator Equal \
    --match-values HTTP \
    --rule-name "redirect" \
    --action-name "UrlRedirect" \
    --redirect-protocol Https \
    --redirect-type Moved

배달 규칙에 작업 또는 조건 추가

새 배달 규칙을 추가로 사용자 지정해야 할 수도 있습니다. 만든 후 필요에 따라 작업 또는 조건을 추가할 수 있습니다. az afd rule action add 또는 az afd rule condition add를 실행하여 규칙을 업데이트합니다.

작업 추가

az afd rule action add \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules \
    --profile-name contosoafd \
    --rule-name redirect \
    --action-name "CacheExpiration" \
    --cache-behavior BypassCache

조건 추가

az afd rule condition add \
    --resource-group myRGFDCentral \
    --rule-set-name contosorules \
    --profile-name contosoafd \
    --rule-name redirect \
    --match-variable RemoteAddress \
    --operator GeoMatch \
    --match-values "TH"

리소스 정리

Front Door용 리소스가 필요하지 않은 경우 두 리소스 그룹을 모두 삭제합니다. 리소스 그룹을 삭제하면 Front Door와 관련된 모든 리소스도 삭제됩니다.

az group delete를 실행합니다.

az group delete \
    --name myRGFDCentral

az group delete \
    --name myRGFDEast