You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单Application Gateway通过自定义子域名路由多App Service配置求助

解决方案:单Application Gateway基于子域名路由至多App Service

核心结论

完全可行,通过基于主机名的路由规则即可实现子域名分流,同时解决你之前遇到的路径追加问题,全程可使用Azure原生服务完成域名、DNS、网关的配置。

整体架构

  • 父域名:api.yourdomain.com(Azure购买)
  • 子域名:dev.api.yourdomain.com(指向开发环境App Service)、prod.api.yourdomain.com(指向生产环境App Service)
  • 所有子域名DNS记录指向Application Gateway(AGW)的公网IP
  • AGW通过匹配请求的Host头,将流量转发到对应后端池的App Service,同时启用WAF防护

分步配置全流程

1. 准备基础资源

  • 购买Azure自定义域名:在Azure门户搜索“域名”,选择合适的域名购买(比如yourdomain.com)。购买完成后,Azure会自动关联对应的Azure DNS Zone(若未自动创建,手动创建同名DNS Zone)。
  • 确认AGW配置:确保AGW已部署,且启用了WAF层(建议用WAF_v2 SKU),拥有固定的公网IP(静态IP,避免DNS频繁更新)。
  • App Service准备:两个App Service(dev/prod)已部署同版本代码,确保能通过默认域名正常访问。

2. 绑定子域名到App Service

AGW转发流量时会保留原请求的Host头,因此需要让App Service认可对应的子域名:

  • 进入开发环境App Service的“自定义域名”页面,点击“添加自定义域名”。
  • 输入子域名dev.api.yourdomain.com,点击“验证”。Azure会自动生成TXT记录用于域名所有权验证。
  • 切换到Azure DNS Zone页面,添加一条TXT记录:
    • 名称:asuid.dev.api
    • 值:复制App Service验证页面给出的字符串
  • 回到App Service验证页面,确认验证通过后,点击“添加”完成绑定。
  • 重复上述步骤,将prod.api.yourdomain.com绑定到生产环境App Service。

3. 配置Application Gateway核心组件

3.1 创建后端池

  • 进入AGW的“后端池”页面,点击“添加”:
    • 后端池名称:dev-app-service-pool
    • 目标类型:App Service
    • 目标:选择开发环境的App Service
  • 同理创建prod-app-service-pool,绑定生产环境App Service。

3.2 配置HTTP设置

  • 进入AGW的“HTTP设置”页面,点击“添加”:
    • 名称:dev-http-settings
    • 后端协议:HTTPS(建议用HTTPS加密)
    • 后端端口:443
    • 勾选“使用App Service托管的域名”(此选项会自动处理App Service的主机头验证,避免403错误)
    • 其他保持默认,点击“添加”
  • 同理创建prod-http-settings,对应生产环境后端池。

3.3 创建多站点监听

  • 进入AGW的“监听”页面,点击“添加”:
    • 名称:dev-listener
    • 前端IP配置:选择AGW的公网IP
    • 前端端口:443(HTTPS)
    • 协议:HTTPS
    • 主机名:dev.api.yourdomain.com(关键,用于匹配子域名请求)
    • SSL证书:上传或选择Azure密钥保管库中的SSL证书(若没有,可在Azure购买免费的App Service证书,绑定到子域名)
  • 同理创建prod-listener,主机名设为prod.api.yourdomain.com,使用相同或对应证书。

3.4 创建基于主机名的路由规则

  • 进入AGW的“规则”页面,点击“添加”:
    • 名称:dev-route-rule
    • 关联监听:选择dev-listener
    • 后端目标:选择dev-app-service-pool和dev-http-settings
    • 其他保持默认,点击“添加”
  • 同理创建prod-route-rule,关联prod-listener、prod-app-service-pool和prod-http-settings。

4. 配置Azure DNS Zone记录

  • 进入与域名关联的Azure DNS Zone页面,添加两条A记录:
    • 第一条:
      • 名称:dev.api
      • IP地址:AGW的静态公网IP
    • 第二条:
      • 名称:prod.api
      • IP地址:AGW的静态公网IP
  • 保存记录,等待DNS生效(通常5-10分钟)。

解决你之前遇到的问题

  1. 路径路由的路径追加问题:之前用路径路由时,AGW默认会将路径追加到后端URL,导致App Service收到的路径是原路径+追加路径。而基于主机名的路由规则不会修改路径,请求的/api/user会原封不动转发到对应App Service的/api/user,完美匹配你同代码同路径的需求。
  2. 多监听配置失败问题:之前的多监听未正确配置主机名匹配,且未绑定App Service的自定义域名,导致AGW转发的请求被App Service拒绝(因为App Service不识别陌生的Host头)。现在通过绑定子域名到App Service,同时在AGW监听中指定对应主机名,即可正常转发。

内容的提问来源于stack exchange,提问作者Nikola_Gospodjinacki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:05:35