Bird
Raised Fist0
Azurecloud~5 mins

CDN with custom domains in Azure - Commands & Configuration

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
A CDN helps deliver your website content faster by storing copies closer to users. Using a custom domain with your CDN makes your website address look professional and easy to remember.
When you want your website to load faster for visitors around the world.
When you want to use your own website name instead of a default CDN address.
When you want to secure your website with HTTPS using your custom domain.
When you want to improve your website's reliability by using CDN caching.
When you want to reduce the load on your main web server by serving static files from the CDN.
Config File - azure-cdn-custom-domain.json
azure-cdn-custom-domain.json
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Cdn/profiles",
      "apiVersion": "2023-05-01",
      "name": "myCdnProfile",
      "location": "global",
      "sku": {
        "name": "Standard_Microsoft"
      },
      "properties": {}
    },
    {
      "type": "Microsoft.Cdn/profiles/endpoints",
      "apiVersion": "2023-05-01",
      "name": "myCdnProfile/myEndpoint",
      "dependsOn": [
        "Microsoft.Cdn/profiles/myCdnProfile"
      ],
      "properties": {
        "originHostHeader": "myorigin.azurewebsites.net",
        "origins": [
          {
            "name": "myOrigin",
            "properties": {
              "hostName": "myorigin.azurewebsites.net"
            }
          }
        ],
        "isHttpAllowed": true,
        "isHttpsAllowed": true
      }
    },
    {
      "type": "Microsoft.Cdn/profiles/endpoints/customDomains",
      "apiVersion": "2023-05-01",
      "name": "myCdnProfile/myEndpoint/myCustomDomain",
      "dependsOn": [
        "Microsoft.Cdn/profiles/endpoints/myCdnProfile/myEndpoint"
      ],
      "properties": {
        "hostName": "www.example.com"
      }
    }
  ]
}

This template creates a CDN profile and endpoint in Azure.

The profile is the container for your CDN settings.

The endpoint points to your original website (origin).

The custom domain links your own website name to the CDN endpoint.

Commands
This command deploys the CDN profile, endpoint, and custom domain to your Azure resource group.
Terminal
az deployment group create --resource-group example-rg --template-file azure-cdn-custom-domain.json
Expected OutputExpected
{ "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/example-rg/providers/Microsoft.Resources/deployments/deploymentName", "name": "deploymentName", "properties": { "provisioningState": "Succeeded" } }
→
--resource-group - Specifies the Azure resource group to deploy to
→
--template-file - Specifies the ARM template file to use for deployment
This command checks the details of the custom domain linked to your CDN endpoint to confirm it was created.
Terminal
az cdn custom-domain show --resource-group example-rg --profile-name myCdnProfile --endpoint-name myEndpoint --name myCustomDomain
Expected OutputExpected
{ "hostName": "www.example.com", "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/example-rg/providers/Microsoft.Cdn/profiles/myCdnProfile/endpoints/myEndpoint/customDomains/myCustomDomain", "name": "myCustomDomain", "resourceState": "Active" }
→
--resource-group - Specifies the Azure resource group
→
--profile-name - Specifies the CDN profile name
→
--endpoint-name - Specifies the CDN endpoint name
→
--name - Specifies the custom domain name
This command enables HTTPS on your custom domain so visitors get a secure connection.
Terminal
az cdn custom-domain enable-https --resource-group example-rg --profile-name myCdnProfile --endpoint-name myEndpoint --name myCustomDomain
Expected OutputExpected
{ "customHttpsProvisioningState": "Enabling", "customHttpsProvisioningSubstate": "InProgress" }
→
--resource-group - Specifies the Azure resource group
→
--profile-name - Specifies the CDN profile name
→
--endpoint-name - Specifies the CDN endpoint name
→
--name - Specifies the custom domain name
This command shows the status of the CDN endpoint to verify it is running and serving content.
Terminal
az cdn endpoint show --resource-group example-rg --profile-name myCdnProfile --name myEndpoint
Expected OutputExpected
{ "hostName": "myEndpoint.azureedge.net", "resourceState": "Running", "isHttpAllowed": true, "isHttpsAllowed": true }
→
--resource-group - Specifies the Azure resource group
→
--profile-name - Specifies the CDN profile name
→
--name - Specifies the CDN endpoint name
Key Concept

If you remember nothing else from this pattern, remember: linking your own website name to a CDN endpoint makes your site faster and more professional.

Common Mistakes
Not creating a DNS CNAME record pointing the custom domain to the CDN endpoint hostname.
Without this DNS record, visitors cannot reach your CDN through your custom domain.
Create a CNAME record in your domain registrar that points your custom domain (e.g., www.example.com) to the CDN endpoint hostname (e.g., myEndpoint.azureedge.net).
Trying to enable HTTPS on the custom domain before the DNS CNAME record is active.
HTTPS provisioning requires the domain to be verified via DNS, so it will fail if DNS is not set up.
Wait for DNS propagation after creating the CNAME record before enabling HTTPS.
Using HTTP only on the CDN endpoint and custom domain.
This leaves your website insecure and can cause browsers to warn visitors.
Always enable HTTPS on your CDN custom domain for secure connections.
Summary
Deploy a CDN profile and endpoint with an origin pointing to your website.
Add a custom domain to the CDN endpoint to use your own website name.
Verify the custom domain and enable HTTPS for secure, fast content delivery.

Practice

(1/5)
1. What is the primary purpose of using a custom domain with Azure CDN?
easy
A. To deliver content using your own website address instead of the default CDN URL
B. To increase the storage capacity of the CDN
C. To reduce the cost of CDN services
D. To disable HTTPS on the CDN endpoint

Solution

  1. Step 1: Understand CDN default behavior

    Azure CDN provides a default URL for content delivery, but it uses a generic domain name.
  2. Step 2: Purpose of custom domain

    Using a custom domain lets you serve content with your own website address, improving branding and user trust.
  3. Final Answer:

    To deliver content using your own website address instead of the default CDN URL -> Option A
  4. Quick Check:

    Custom domain = Own website address [OK]
Hint: Custom domain means your own website address on CDN [OK]
Common Mistakes:
  • Thinking custom domain increases storage
  • Assuming custom domain reduces cost
  • Believing custom domain disables HTTPS
2. Which DNS record type must you create to map your custom domain to an Azure CDN endpoint?
easy
A. CNAME record
B. SRV record
C. TXT record
D. MX record

Solution

  1. Step 1: Identify DNS record for domain aliasing

    CNAME records map one domain name to another, which is needed to point your custom domain to the CDN endpoint.
  2. Step 2: Exclude other DNS record types

    MX is for mail, TXT for text info, SRV for service location, none suitable for domain aliasing.
  3. Final Answer:

    CNAME record -> Option A
  4. Quick Check:

    Custom domain uses CNAME DNS record [OK]
Hint: Custom domain points to CDN via CNAME record [OK]
Common Mistakes:
  • Using MX record for domain mapping
  • Confusing TXT record with CNAME
  • Trying to use SRV record for CDN
3. Given the following Azure CLI command snippet to add a custom domain to a CDN endpoint, what will happen if the DNS CNAME record is not set correctly?
az cdn custom-domain create --endpoint-name myEndpoint --profile-name myProfile --resource-group myGroup --hostname www.example.com
medium
A. The custom domain will be added successfully without any issues
B. The CDN endpoint will automatically create the DNS record
C. The custom domain will be added but HTTPS will be disabled
D. The command will fail with a DNS validation error

Solution

  1. Step 1: Understand DNS validation in Azure CDN

    Azure CDN requires DNS validation to confirm ownership of the custom domain via CNAME record.
  2. Step 2: Effect of missing or incorrect DNS record

    If the CNAME record is missing or incorrect, the command fails with a DNS validation error to prevent misconfiguration.
  3. Final Answer:

    The command will fail with a DNS validation error -> Option D
  4. Quick Check:

    Missing CNAME causes DNS validation error [OK]
Hint: DNS must validate custom domain or command fails [OK]
Common Mistakes:
  • Assuming CDN auto-creates DNS records
  • Thinking custom domain adds without DNS setup
  • Believing HTTPS disables if DNS is wrong
4. You added a custom domain to your Azure CDN endpoint but HTTPS is not working. Which of the following is the most likely cause?
medium
A. The CDN endpoint does not support HTTPS at all
B. You used an A record instead of a CNAME record in DNS
C. You forgot to enable HTTPS on the custom domain in the CDN settings
D. The CDN profile is in a different Azure region than your resource group

Solution

  1. Step 1: Check HTTPS enablement for custom domain

    Azure CDN requires explicit enabling of HTTPS on custom domains to serve secure content.
  2. Step 2: Exclude other causes

    CDN endpoints support HTTPS, A record usage causes DNS issues but not HTTPS directly, region mismatch does not block HTTPS.
  3. Final Answer:

    You forgot to enable HTTPS on the custom domain in the CDN settings -> Option C
  4. Quick Check:

    HTTPS must be enabled on custom domain [OK]
Hint: Enable HTTPS explicitly for custom domain [OK]
Common Mistakes:
  • Assuming HTTPS is automatic
  • Blaming region mismatch for HTTPS failure
  • Using A record instead of CNAME but ignoring HTTPS setting
5. You want to design a scalable Azure CDN solution with a custom domain that supports HTTPS and handles millions of users globally. Which combination of steps is the best practice?
hard
A. Create a CDN profile only, add your custom domain with an A record, disable HTTPS to reduce latency, and rely on a single CDN POP
B. Create a CDN profile and endpoint, add your custom domain with a CNAME DNS record, enable HTTPS with Azure-managed certificates, and use multiple CDN POPs worldwide
C. Create multiple CDN profiles for each region, add custom domains without DNS changes, and enable HTTPS manually with self-signed certificates
D. Use Azure CDN without custom domains, enable HTTPS, and configure DNS to point directly to the origin server

Solution

  1. Step 1: Setup CDN profile and endpoint with custom domain

    Create a CDN profile and endpoint, then add your custom domain using a CNAME DNS record for proper domain mapping.
  2. Step 2: Enable HTTPS and use global CDN POPs

    Enable HTTPS using Azure-managed certificates for security and scalability, and leverage multiple CDN Points of Presence (POPs) worldwide to handle global traffic efficiently.
  3. Final Answer:

    Create a CDN profile and endpoint, add your custom domain with a CNAME DNS record, enable HTTPS with Azure-managed certificates, and use multiple CDN POPs worldwide -> Option B
  4. Quick Check:

    Custom domain + CNAME + HTTPS + global POPs = Best practice [OK]
Hint: Use CNAME, enable HTTPS, and leverage global CDN POPs [OK]
Common Mistakes:
  • Using A record instead of CNAME
  • Disabling HTTPS to save latency
  • Skipping DNS changes for custom domains
  • Relying on single CDN POP for global scale