第2阶段 — 使用 Azure CLI 的 Azure Front Door(Standard)全局路由

发布: (2026年2月28日 GMT+8 12:57)
5 分钟阅读
原文: Dev.to

Source: Dev.to

概览

在第 1 阶段,我们部署了区域性 App Service。
第 2 阶段通过使用 Azure Front Door(Standard)添加 全局入口点 来提升架构——全部通过 Cloud Shell 中的 Azure CLI 完成。

典型的请求流程:

User

Azure Front Door (Global Edge)

Origin Group

App Service (SEA)

即使只有单个区域(受配额限制),此设置仍能提供:

  • 全局 Anycast 入口点
  • 边缘 TLS 终止
  • 基于健康探测的路由
  • 面向未来的多区域扩展

单个资源组中的资源

  • Azure Front Door 配置文件(Standard)
  • 端点
  • 源组
  • 源(App Service)
  • 路由
RG=rg-afd-lab
PROFILE_NAME=afd-profile
ENDPOINT_NAME=afd-endpoint

创建 Front Door 配置文件

az afd profile create \
  --resource-group $RG \
  --profile-name $PROFILE_NAME \
  --sku Standard_AzureFrontDoor

创建端点

az afd endpoint create \
  --resource-group $RG \
  --profile-name $PROFILE_NAME \
  --endpoint-name $ENDPOINT_NAME \
  --enabled-state Enabled

获取端点主机名

az afd endpoint show \
  --resource-group $RG \
  --profile-name $PROFILE_NAME \
  --endpoint-name $ENDPOINT_NAME \
  --query hostName -o tsv

您将收到类似以下的主机名:

.z01.azurefd.net

创建源组

ORIGIN_GROUP=app-origin-group

az afd origin-group create \
  --resource-group $RG \
  --profile-name $PROFILE_NAME \
  --origin-group-name $ORIGIN_GROUP \
  --probe-request-type GET \
  --probe-protocol Https \
  --probe-path "/" \
  --probe-interval-in-seconds 30

这将在 / 上每 30 秒进行一次健康检查。

添加源(App Service)

az afd origin create \
  --resource-group $RG \
  --profile-name $PROFILE_NAME \
  --origin-group-name $ORIGIN_GROUP \
  --origin-name sea-origin \
  --host-name app-sea-3446.azurewebsites.net \
  --origin-host-header app-sea-3446.azurewebsites.net \
  --priority 1 \
  --weight 1000 \
  --enabled-state Enabled

重要

  • origin-host-header 必须与 App Service 主机名匹配。
  • 默认强制进行 HTTPS 证书验证;不匹配会导致错误。

创建路由(Standard SKU 需要域名)

az afd route create \
  --resource-group $RG \
  --profile-name $PROFILE_NAME \
  --endpoint-name $ENDPOINT_NAME \
  --route-name app-route \
  --origin-group $ORIGIN_GROUP \
  --supported-protocols Http Https \
  --patterns-to-match "/*" \
  --forwarding-protocol MatchRequest \
  --https-redirect Enabled \
  --link-to-default-domain Enabled

如果省略 --link-to-default-domain Enabled,命令会失败并显示:

(BadRequest) At least one domain is required for the route.

验证路由

az afd route list \
  --resource-group $RG \
  --profile-name $PROFILE_NAME \
  --endpoint-name $ENDPOINT_NAME \
  -o table

您应该看到:

  • ProvisioningState = Succeeded
  • DeploymentStatus = Succeeded

如果 DeploymentStatus = NotStarted,则表示路由尚未在边缘激活。

触发激活

curl https://

第一次请求会导致 Front Door 在全球范围内部署。成功的响应示例:

Hello from Southeast Asia

如果收到:

404 Not Found
X-Cache: CONFIG_NOCACHE

则说明路由 尚未完全部署到边缘(配置层面的错误,而非后端问题)。

直接验证后端

curl -I https://app-sea-3446.azurewebsites.net
  • 如果后端返回 200,则问题出在路由激活上。
  • 如果路由仍然卡住,删除后重新创建:
az afd route delete   # 添加相应的标识符
az afd route create   # 重新执行创建命令

重新创建会强制进行全局重新部署。

检查 Origin 组

az afd origin-group show \
  --resource-group $RG \
  --profile-name $PROFILE_NAME \
  --origin-group-name $ORIGIN_GROUP

需要确认的关键字段:

  • "probePath": "/"
  • "probeProtocol": "Https"
  • "provisioningState": "Succeeded"

架构图(文本)

Internet

Azure Front Door Edge (Anycast)

Origin Group

App Service (SEA)
  • 全局入口点
  • 边缘 TLS 终止
  • 健康探测路由
  • 生产就绪结构
  • 支持多区域扩展的能力

第2阶段的关键教训

  • Standard SKU 需要为路由进行域关联。
  • DeploymentStatus = NotStarted 表示边缘尚未激活。
  • CONFIG_NOCACHE 404 是配置级别的响应,而非后端错误。
  • 路由对象 会触发全局边缘部署。
  • 必须先成功通过健康探测,才能激活。

下一步(第 3 阶段)

  • 添加 Web Application Firewall (WAF)
  • 配置 custom domain + managed TLS
  • 启用 Azure Monitor diagnostics
  • 实现 active/passive failover
  • 扩展到 multiple regions
0 浏览
Back to Blog

相关文章

阅读更多 »

当工作成为心理健康风险时

markdown !Ravi Mishrahttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fu...