Partager via


Azure Front Door : déployer un domaine personnalisé

S’applique à : ✔️ Front Door (classique)

Important

  • À compter du 15 août 2025, Azure Front Door (classique) ne prendra plus en charge la nouvelle intégration de domaine. Migrez vers AFD Standard et Premium pour créer de nouveaux domaines ou profils et éviter toute interruption de service.  En savoir plus

Cet exemple de script Azure CLI montre comment déployer un nom de domaine personnalisé et un certificat TLS sur un serveur frontal Azure Front Door. Le script automatise l’approvisionnement d’Azure Front Door avec un nom de domaine personnalisé (hébergé par Azure DNS) et un certificat TLS.

Important

Vérifiez qu’une zone publique Azure DNS existe déjà pour votre nom de domaine. Pour accéder à un didacticiel, consultez Héberger votre domaine dans Azure DNS.

Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.

Prerequisites

Exemple de script

Lancement d’Azure Cloud Shell

Azure Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour exécuter les étapes de cet article. Il contient des outils Azure courants préinstallés et configurés pour être utilisés avec votre compte.

Pour ouvrir Cloud Shell, sélectionnez simplement Essayer en haut à droite d’un bloc de code. Vous pouvez aussi lancer Cloud Shell dans un onglet distinct du navigateur en accédant à https://shell.azure.com.

Quand Cloud Shell s’ouvre, vérifiez que Bash est sélectionné pour votre environnement. Les sessions ultérieures utiliseront Azure CLI dans un environnement Bash. Sélectionnez Copier pour copier les blocs de code, collez-les dans Cloud Shell, puis appuyez sur Entrée pour les exécuter.

Connexion à Azure

Cloud Shell est automatiquement authentifié sous le compte initial utilisé pour la connexion. Utilisez le script suivant pour vous connecter avec un autre abonnement, en remplaçant subscriptionId par votre ID d’abonnement Azure.

Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.

subscription="subscriptionId" # Set Azure subscription ID here

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

Pour en savoir plus, consultez définir l’abonnement actif ou se connecter de manière interactive.

Mise en route

Ce script va effectuer ce qui suit :

  1. Créez un groupe de ressources.
  2. Créez un compte de stockage pour héberger une application monopage (SPA).
  3. Activez l’hébergement SPA sur le compte de stockage.
  4. Chargez un fichier index.html « Hello world! ».
  5. Créez un profil Front Door.
  6. Créez un alias DNS pour Apex qui est résolu vers Front Door.
  7. Créez un CNAME pour le nom d’hôte adverify.
  8. Créez un point de terminaison front-end Azure Front Door pour le domaine personnalisé.
  9. Ajoutez un itinéraire du front-end de domaine personnalisé à l’origine de l’application monopage.
  10. Ajoutez une règle d’acheminement pour rediriger HTTP vers HTTPS.
  11. Activez HTTPS avec un certificat managé Front Door.

Exécuter le script

Pour exécuter ce script, copiez le code suivant dans un fichier .sh, remplacez les variables codées en dur par vos valeurs de domaine, puis exécutez la commande suivante pour passer ces variables dans le script :

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

Nettoyer les ressources

Utilisez la commande suivante pour supprimer le groupe de ressources et toutes les ressources associées à celui-ci à l’aide de la commande az group delete, sauf si vous avez toujours besoin de ces ressources. La création, ainsi que la suppression, de certaines de ces ressources peut prendre du temps.

az group delete --name $resourceGroup

Référence d'exemple

Ce script utilise les commandes suivantes. Chaque commande du tableau renvoie à une documentation spécifique.

Command Description
Créer un groupe avec la commande az group create. Crée un groupe de ressources pour stocker toutes les ressources.
az storage account create Crée un compte de stockage Azure dans le groupe de ressources spécifié.
az storage blob service-properties update - mettre à jour les propriétés du service de stockage des blobs Met à jour les propriétés du service blob de stockage.
az storage blob upload Charge un objet blob dans un conteneur.
az storage account show Affiche les propriétés du compte de stockage.
az network front-door create Crée un instance Front Door.
ensemble d'enregistrements DNS réseau az Gère les enregistrements et les jeux d’enregistrements DNS.
az network front-door Gère les instances Front Door.

Étapes suivantes

Pour plus d’informations sur Azure CLI, consultez la documentation relative à l’interface Azure CLI.