Sdílet prostřednictvím


Azure Front Door: Nasazení vlastní domény

Platí pro: ✔️ Front Door (classic)

Important

  • Od 15. srpna 2025 už Azure Front Door (classic) nebude podporovat nové onboardingy domén. Migrujte na AFD Standard a Premium , abyste vytvořili nové domény nebo profily a vyhnuli se přerušení služeb.  Další informace

Tento ukázkový skript Azure CLI ukazuje, jak nasadit vlastní název domény a certifikát TLS na front-end služby Azure Front Door. Skript automatizuje zřizování služby Azure Front Door s vlastním názvem domény (hostovaným Azure DNS) a certifikátem TLS.

Important

Ujistěte se, že pro název vaší domény už existuje veřejná zóna Azure DNS. Kurz najdete v tématu Hostování vaší domény v Azure DNS.

Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.

Prerequisites

Ukázkový skript

Spuštění služby Azure Cloud Shell

Azure Cloud Shell je bezplatné interaktivní prostředí, které můžete použít k provedení kroků v tomto článku. Má předinstalované obecné nástroje Azure, které jsou nakonfigurované pro použití s vaším účtem.

Pokud chcete otevřít Cloud Shell, vyberte položku Vyzkoušet v pravém horním rohu bloku kódu. Cloud Shell můžete spustit také na samostatné kartě prohlížeče na adrese https://shell.azure.com.

Po otevření Cloud Shellu ověřte, že je pro vaše prostředí vybraný Bash . Následující relace budou používat Azure CLI v prostředí Bash. Vyberte Kopírovat pro zkopírování bloků kódu, vložte je do Cloud Shellu a stiskněte klávesu Enter pro spuštění.

Přihlášení k Azure

Cloud Shell se automaticky ověřuje pod prvním přihlášeným účtem. Pomocí následujícího skriptu se přihlaste pomocí jiného předplatného a nahraďte id předplatného Azure.

Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.

subscription="subscriptionId" # Set Azure subscription ID here

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

Další informace najdete v tématu Nastavení aktivního předplatného nebo interaktivního přihlášení.

Začínáme

Tento skript bude:

  1. Vytvořte skupinu prostředků.
  2. Vytvořte účet úložiště pro hostování jednostránkové aplikace (SPA).
  3. Povolte hostování SPA v účtu úložiště.
  4. Nahrajte soubor "Hello world!" index.html.
  5. Vytvořte profil služby Front Door.
  6. Vytvořte DNS alias pro Apex, který směřuje k Front Door.
  7. Vytvořte záznam CNAME pro adverify hostitele.
  8. Vytvořte koncový bod front-endu služby Front Door pro vlastní doménu.
  9. Přidejte trasu z front-endu vlastní domény do zdroje SPA.
  10. Přidejte pravidlo směrování pro přesměrování HTTP na HTTPS.
  11. Povolte HTTPS pomocí spravovaného certifikátu služby Front Door.

Spuštění skriptu

Pokud chcete tento skript spustit, zkopírujte následující kód do .sh souboru, změňte pevně zakódované proměnné na hodnoty domény a pak spusťte následující příkaz, který tyto proměnné předá do skriptu:

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

Uvolnění zdrojů

Pomocí následujícího příkazu odeberte skupinu prostředků a všechny prostředky přidružené k ní pomocí příkazu az group delete – pokud tyto prostředky nepotřebujete. Vytvoření některých z těchto prostředků a odstranění může chvíli trvat.

az group delete --name $resourceGroup

Referenční ukázka

Tento skript používá následující příkazy. Každý příkaz v tabulce odkazuje na příslušnou část dokumentace.

Command Description
Příkaz az group create slouží k vytvoření skupiny v Azure. Vytvoří skupinu prostředků pro uložení všech prostředků.
az storage account create - příkaz pro vytvoření účtu úložiště Vytvoří účet služby Azure Storage v zadané skupině prostředků.
az storage blob service-properties update (aktualizace vlastností služby) Aktualizuje vlastnosti služby úložiště blobů.
az storage blob upload (nahrání datového objektu) Nahraje blob do kontejneru.
az úložiště účet zobrazit Zobrazuje vlastnosti účtu úložiště.
az network front-door create Vytvoří přední dveře.
az síť dns sada záznamů Spravuje záznamy a sady záznamů DNS.
az network front-door Spravuje službu Front Door.

Další kroky

Další informace o Azure CLI najdete v dokumentaci k Azure CLI.