Microsoft.Network frontDoors template reference

Template format

To create a Microsoft.Network/frontDoors resource, add the following JSON to the resources section of your template.

{
  "name": "string",
  "type": "Microsoft.Network/frontDoors",
  "apiVersion": "2019-04-01",
  "location": "string",
  "tags": {},
  "properties": {
    "friendlyName": "string",
    "routingRules": [
      {
        "id": "string",
        "properties": {
          "frontendEndpoints": [
            {
              "id": "string"
            }
          ],
          "acceptedProtocols": [
            "string"
          ],
          "patternsToMatch": [
            "string"
          ],
          "enabledState": "string",
          "routeConfiguration": {
            "@odata.type": "string"
          },
          "resourceState": "string"
        },
        "name": "string"
      }
    ],
    "loadBalancingSettings": [
      {
        "id": "string",
        "properties": {
          "sampleSize": "integer",
          "successfulSamplesRequired": "integer",
          "additionalLatencyMilliseconds": "integer",
          "resourceState": "string"
        },
        "name": "string"
      }
    ],
    "healthProbeSettings": [
      {
        "id": "string",
        "properties": {
          "path": "string",
          "protocol": "string",
          "intervalInSeconds": "integer",
          "resourceState": "string"
        },
        "name": "string"
      }
    ],
    "backendPools": [
      {
        "id": "string",
        "properties": {
          "backends": [
            {
              "address": "string",
              "httpPort": "integer",
              "httpsPort": "integer",
              "enabledState": "string",
              "priority": "integer",
              "weight": "integer",
              "backendHostHeader": "string"
            }
          ],
          "loadBalancingSettings": {
            "id": "string"
          },
          "healthProbeSettings": {
            "id": "string"
          },
          "resourceState": "string"
        },
        "name": "string"
      }
    ],
    "frontendEndpoints": [
      {
        "id": "string",
        "properties": {
          "hostName": "string",
          "sessionAffinityEnabledState": "string",
          "sessionAffinityTtlSeconds": "integer",
          "webApplicationFirewallPolicyLink": {
            "id": "string"
          },
          "resourceState": "string"
        },
        "name": "string"
      }
    ],
    "backendPoolsSettings": {
      "enforceCertificateNameCheck": "string"
    },
    "enabledState": "string",
    "resourceState": "string"
  }
}

Property values

The following tables describe the values you need to set in the schema.

Microsoft.Network/frontDoors object

Name Type Required Value
name string Yes Name of the Front Door which is globally unique.
type enum Yes Microsoft.Network/frontDoors
apiVersion enum Yes 2019-04-01
location string No Resource location.
tags object No Resource tags.
properties object Yes Properties of the Front Door Load Balancer - FrontDoorProperties object

FrontDoorProperties object

Name Type Required Value
friendlyName string No A friendly name for the frontDoor
routingRules array No Routing rules associated with this Front Door. - RoutingRule object
loadBalancingSettings array No Load balancing settings associated with this Front Door instance. - LoadBalancingSettingsModel object
healthProbeSettings array No Health probe settings associated with this Front Door instance. - HealthProbeSettingsModel object
backendPools array No Backend pools available to routing rules. - BackendPool object
frontendEndpoints array No Frontend endpoints available to routing rules. - FrontendEndpoint object
backendPoolsSettings object No Settings for all backendPools - BackendPoolsSettings object
enabledState enum No Operational status of the Front Door load balancer. Permitted values are 'Enabled' or 'Disabled'. - Enabled or Disabled
resourceState enum No Resource status of the Front Door. - Creating, Enabling, Enabled, Disabling, Disabled, Deleting

RoutingRule object

Name Type Required Value
id string No Resource ID.
properties object No Properties of the Front Door Routing Rule - RoutingRuleProperties object
name string No Resource name.

LoadBalancingSettingsModel object

Name Type Required Value
id string No Resource ID.
properties object No Properties of the load balancing settings - LoadBalancingSettingsProperties object
name string No Resource name.

HealthProbeSettingsModel object

Name Type Required Value
id string No Resource ID.
properties object No Properties of the health probe settings - HealthProbeSettingsProperties object
name string No Resource name.

BackendPool object

Name Type Required Value
id string No Resource ID.
properties object No Properties of the Front Door Backend Pool - BackendPoolProperties object
name string No Resource name.

FrontendEndpoint object

Name Type Required Value
id string No Resource ID.
properties object No Properties of the Frontend endpoint - FrontendEndpointProperties object
name string No Resource name.

BackendPoolsSettings object

Name Type Required Value
enforceCertificateNameCheck enum No Whether to enforce certificate name check on HTTPS requests to all backend pools. No effect on non-HTTPS requests. - Enabled or Disabled

RoutingRuleProperties object

Name Type Required Value
frontendEndpoints array No Frontend endpoints associated with this rule - SubResource object
acceptedProtocols array No Protocol schemes to match for this rule - Http or Https
patternsToMatch array No The route patterns of the rule. - string
enabledState enum No Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled'. - Enabled or Disabled
routeConfiguration object No A reference to the routing configuration. - RouteConfiguration object
resourceState enum No Resource status. - Creating, Enabling, Enabled, Disabling, Disabled, Deleting

LoadBalancingSettingsProperties object

Name Type Required Value
sampleSize integer No The number of samples to consider for load balancing decisions
successfulSamplesRequired integer No The number of samples within the sample period that must succeed
additionalLatencyMilliseconds integer No The additional latency in milliseconds for probes to fall into the lowest latency bucket
resourceState enum No Resource status. - Creating, Enabling, Enabled, Disabling, Disabled, Deleting

HealthProbeSettingsProperties object

Name Type Required Value
path string No The path to use for the health probe. Default is /
protocol enum No Protocol scheme to use for this probe. - Http or Https
intervalInSeconds integer No The number of seconds between health probes.
resourceState enum No Resource status. - Creating, Enabling, Enabled, Disabling, Disabled, Deleting

BackendPoolProperties object

Name Type Required Value
backends array No The set of backends for this pool - Backend object
loadBalancingSettings object No Load balancing settings for a backend pool - SubResource object
healthProbeSettings object No L7 health probe settings for a backend pool - SubResource object
resourceState enum No Resource status. - Creating, Enabling, Enabled, Disabling, Disabled, Deleting

FrontendEndpointProperties object

Name Type Required Value
hostName string No The host name of the frontendEndpoint. Must be a domain name.
sessionAffinityEnabledState enum No Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled'. - Enabled or Disabled
sessionAffinityTtlSeconds integer No UNUSED. This field will be ignored. The TTL to use in seconds for session affinity, if applicable.
webApplicationFirewallPolicyLink object No Defines the Web Application Firewall policy for each host (if applicable) - FrontendEndpointUpdateParametersWebApplicationFirewallPolicyLink object
resourceState enum No Resource status. - Creating, Enabling, Enabled, Disabling, Disabled, Deleting

SubResource object

Name Type Required Value
id string No Resource ID.

RouteConfiguration object

Name Type Required Value
@odata.type string Yes

Backend object

Name Type Required Value
address string No Location of the backend (IP address or FQDN)
httpPort integer No The HTTP TCP port number. Must be between 1 and 65535.
httpsPort integer No The HTTPS TCP port number. Must be between 1 and 65535.
enabledState enum No Whether to enable use of this backend. Permitted values are 'Enabled' or 'Disabled'. - Enabled or Disabled
priority integer No Priority to use for load balancing. Higher priorities will not be used for load balancing if any lower priority backend is healthy.
weight integer No Weight of this endpoint for load balancing purposes.
backendHostHeader string No The value to use as the host header sent to the backend. If blank or unspecified, this defaults to the incoming host.

Name Type Required Value
id string No Resource ID.

Quickstart templates

The following quickstart templates deploy this resource type.

Template Description
Create a basic Front Door

Deploy to Azure
This template creates a basic Front Door configuration with a single backend.
Create a Front Door with multiple backends and backend pools

Deploy to Azure
This template creates a Front Door with load balancing configured for multiple backends in a backend pool and also across backend pools based on URL path.
Create a Front Door with HTTP to HTTPS redirection

Deploy to Azure
This template creates a Front Door configuration for HTTP to HTTPS redirection.
Onboard a custom domain with Front Door

Deploy to Azure
This template onboards a custom domain with Front Door
Create Azure Front Door in front of Azure API Management

Deploy to Azure
This sample demonstrates how to use Azure Front Door as a global load balancer in front of Azure API Management.
Create Front Door with caching enabled for certain routes

Deploy to Azure
This template creates a Front Door with caching enabled for the defined routing configuration thus caching any static assets for your workload.
Control Health Probes for your backends on Front Door

Deploy to Azure
This template updates your Front Door to change the health probe settings by setting the probe path and also the intervals in which the probes will be sent.
Create Front Door with Active-Standby config

Deploy to Azure
This template creates a Front Door that demonstrates priority-based routing for Active-Standby application topology.
Configure Session Affinity for your Front Door host names

Deploy to Azure
This template updates a Front Door to enable session affinity for your frontend host, thereby, sending subsequent traffic from the same user session to the same backend.