Azure Front Door: Özel etki alanını dağıtın

Şunlar için geçerlidir: ✔️ Front Door (klasik)

Important

Azure Front Door (klasik) 31 Mart 2027'de emekliliğe ayrılıyor. Hizmet kullanımdan kaldırıldığı için artık profil oluşturmayı, yeni etki alanlarının sisteme alınmasını veya yönetilen sertifikaları desteklemiyor. Hizmet kesintisini önlemek için Azure Front Door Standard veya Premium'a geçiş yapın. Daha fazla bilgi için bkz. Azure Front Door (klasik) kullanımdan kaldırma.

Bu Azure CLI betik örneği, bir Azure Front Door ön ucunda özel etki alanı adı ve TLS sertifikasının nasıl dağıtılacağını gösterir. Betik, özel bir etki alanı adı (Azure DNS tarafından barındırılan) ve bir TLS sertifikası ile Azure Front Door'un kurulmasını ve yapılandırılmasını otomatikleştirir.

Important

Etki alanı adınız için bir Azure DNS ortak bölgesinin zaten mevcut olduğundan emin olun. Kılavuz için bkz Etki alanınızı Azure DNS'de barındırma.

Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

Prerequisites

Örnek senaryo

Azure Cloud Shell'i başlatma

Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabuktur. Sık kullanılan Azure araçları önceden yüklenmiş ve hesabınızla kullanılacak şekilde yapılandırılmıştır.

Cloud Shell'i açmak için kod bloğunun sağ üst köşesinden Deneyin'i seçmeniz yeterlidir. İsterseniz https://shell.azure.com adresine giderek Cloud Shell'i ayrı bir tarayıcı sekmesinde de başlatabilirsiniz.

Cloud Shell açıldığında ortamınız için Bash'in seçili olduğunu doğrulayın. Sonraki oturumlarda Bash ortamında Azure CLI kullanılır, kod bloklarını kopyalamak için Kopyala'yı seçin, Cloud Shell'e yapıştırın ve çalıştırmak için Enter tuşuna basın.

Azure'da oturum açma

Cloud Shell'de oturum açılan ilk hesapta otomatik olarak kimlik doğrulaması yapılır. Farklı bir abonelik kullanarak oturum açmak için aşağıdaki betiği kullanın ve subscriptionId değerini Azure abonelik kimliğiniz ile değiştirin.

Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

subscription="subscriptionId" # Set Azure subscription ID here

az account set -s $subscription # ...or use 'az login'

Daha fazla bilgi için etkin aboneliği ayarlama veya etkileşimli olarak oturum açma kısmına bakın.

Başlangıç Yapmak

Betik:

  1. Bir kaynak grubu oluşturur.
  2. Tek sayfalı bir uygulamayı (SPA) barındırmak için bir depolama hesabı oluşturur.
  3. Depolama hesabında SPA barındırmayı etkinleştirir.
  4. "Merhaba dünya!" dosyası yükler. index.html
  5. Front Door profili oluşturur.
  6. Apex için, Front Door'a yönlenen bir DNS takma adı oluşturur.
  7. adverify konak adı için bir CNAME oluşturur.
  8. Özel etki alanı için bir Front Door ön uç uç noktası oluşturur.
  9. Özel etki alanı ön ucundan SPA kaynağına bir yol ekler.
  10. HTTP'yi HTTPS'ye yeniden yönlendirmek için bir yönlendirme kuralı ekler.
  11. Front Door tarafından yönetilen sertifika ile HTTPS'ye olanak tanır.

Betiği çalıştırın

Bu betiği çalıştırmak için aşağıdaki kodu bir .sh dosyaya kopyalayın, sabit kodlanmış değişkenleri etki alanı değerlerinizle değiştirin ve aşağıdaki komutu yürüterek bu değişkenleri betike geçirin:

AZURE_DNS_ZONE_NAME=www.contoso.com AZURE_DNS_ZONE_RESOURCE_GROUP=contoso-rg ./deploy-custom-apex-domain.sh
# Deploy a Custom Domain name and TLS certificate at the apex (root) on an Azure Front Door front-end.

# VARIABLES
# Change these hardcoded values if required

let "randomIdentifier=$RANDOM*$RANDOM"

# Use resource group environment variable if set
if [ "$RESOURCE_GROUP" == '' ];  
    then
        resourceGroup="msdocs-frontdoor-rg-$randomIdentifier"
    else
        resourceGroup="${RESOURCE_GROUP}"
fi

location='AustraliaEast'
tag='deploy-custom-domain'

storage="msdocsafd$randomIdentifier"

frontDoor="msdocs-frontdoor-$randomIdentifier"
frontDoorFrontEnd='www-contoso'

ttl=300

if [ "$AZURE_DNS_ZONE_NAME" == '' ]; 
   then 
        echo -e "\033[33mAZURE_DNS_ZONE_NAME environment variable is not set. Front Door will be created but custom frontend will not be configured because custom domain name not provided. Try:\n\n    AZURE_DNS_ZONE_NAME=www.contoso.com AZURE_DNS_ZONE_RESOURCE_GROUP=contoso-dns-rg ./deploy-custom-apex-domain.sh\n\nSee Readme for details.\033[0m"
   else     
        if [ "$AZURE_DNS_ZONE_RESOURCE_GROUP" == '' ]; 
            then 
                # write error text
                echo -e "\033[31mAZURE_DNS_ZONE_RESOURCE_GROUP environment variable is not set. Provide the resource group for the Azure DNS Zone. Try:\n\n    AZURE_DNS_ZONE_NAME=www.contoso.com AZURE_DNS_ZONE_RESOURCE_GROUP=contoso-dns-rg ./deploy-custom-apex-domain.sh\n\nSee Readme for details.\033[0m"
                
                # write stderr and exit
                >&2 echo "AZURE_DNS_ZONE_RESOURCE_GROUP environment variable is not set."
                exit 1
    fi
fi

# Resource group
az group create -n $resourceGroup -l $location --tags $tag


# STORAGE ACCOUNT
az storage account create -n $storage -g $resourceGroup -l $location --sku Standard_LRS --kind StorageV2

# Make Storage Account a SPA
az storage blob service-properties update --account-name $storage --static-website \
    --index-document 'index.html' --404-document 'index.html' 

# Upload index.html
az storage blob upload --account-name $storage -f ./index.html -c '$web' -n 'index.html' --content-type 'text/html'

# Get the URL to use as the origin URL on the Front Door backend
spaFQUrl=$( az storage account show -n $storage --query 'primaryEndpoints.web' -o tsv )

# Remove 'https://' and trailing '/'
spaUrl=${spaFQUrl/https:\/\//} ; spaUrl=${spaUrl/\//}


# FRONT DOOR
frontDoorId=$( az network front-door create -n $frontDoor -g $resourceGroup --tags $tag --accepted-protocols Http Https --backend-address $spaUrl --query 'id' -o tsv )


if [ "$AZURE_DNS_ZONE_NAME" != '' ]; 
   then 

    # AZURE DNS
    # Apex hostname on contoso.com
    # Create an Alias DNS recordset
    az network dns record-set a create -n "@" -g $AZURE_DNS_ZONE_RESOURCE_GROUP --zone-name $AZURE_DNS_ZONE_NAME --target-resource $frontDoorId --ttl $ttl

    # Create the domain verify CNAME
    az network dns record-set cname set-record -g $AZURE_DNS_ZONE_RESOURCE_GROUP --zone-name $AZURE_DNS_ZONE_NAME --record-set-name "afdverify" --cname "afdverify.$frontDoor.azurefd.net" --ttl $ttl


    # FRONT DOOR FRONT END
    # Create a frontend for the custom domain
    az network front-door frontend-endpoint create --front-door-name $frontDoor --host-name $AZURE_DNS_ZONE_NAME \
        --name $frontDoorFrontEnd -g $resourceGroup --session-affinity-enabled 'Disabled'

    # Update the default routing rule to include the new frontend
    az network front-door routing-rule update --front-door-name $frontDoor -n 'DefaultRoutingRule' -g $resourceGroup \
        --caching 'Enabled' --accepted-protocols 'Https' \
        --frontend-endpoints 'DefaultFrontendEndpoint' $frontDoorFrontEnd

    # Create http redirect to https routing rule
    az network front-door routing-rule create -f $frontDoor -g $resourceGroup -n 'httpRedirect' \
        --frontend-endpoints $frontDoorFrontEnd --accepted-protocols 'Http' --route-type 'Redirect' \
        --patterns '/*' --redirect-protocol 'HttpsOnly'

    # Update the default routing rule to include the new frontend
    az network front-door routing-rule update --front-door-name $frontDoor -n 'DefaultRoutingRule' -g $resourceGroup \
        --caching 'Enabled' --frontend-endpoints 'DefaultFrontendEndpoint' $frontDoorFrontEnd


    # Enable HTTPS. This command will return quickly but provisioning can take up to an hour to complete
    az network front-door frontend-endpoint enable-https \
        --front-door-name $frontDoor -n $frontDoorFrontEnd -g $resourceGroup
fi

Kaynakları temizleme

Bu kaynaklara sürekli ihtiyaç duymadığınız sürece az group delete komutunu kullanarak kaynak grubunu ve onunla ilişkili tüm kaynakları kaldırmak için aşağıdaki komutu kullanın. Bu kaynaklardan bazılarının oluşturulması ve silinmesi biraz zaman alabilir.

az group delete --name $resourceGroup

Örnek referans

Bu betik aşağıdaki komutları kullanır. Tablodaki her komut, komuta özgü belgelere yönlendirir.

Command Description
az group create komutu bir grup oluşturmak için kullanılır. Tüm kaynakları depolamak için bir kaynak grubu oluşturur.
az storage hesabı oluştur Belirtilen kaynak grubunda bir Azure Depolama hesabı oluşturur.
az storage blob hizmet-özellikleri güncelle Depolama blob hizmeti özelliklerini güncelleştirir.
az storage blob yükle Blobu bir kapsayıcıya yükler.
az depolama hesabı göster Depolama hesabı özelliklerini gösterir.
az network front-door create - Bu komut, Azure CLI aracılığıyla yeni bir ağ ön kapısı oluşturmak için kullanılır. Ön Kapı oluşturur.
az network dns record-set (DNS kayıt seti) DNS kayıtlarını ve kayıt kümelerini yönetir.
Az Network Front-Door Ön Kapıları yönetir.