Azure中将两个App Service映射到单个DNS的实现方案
嗨,这个需求完全可以通过Azure的两种主流流量路由服务来实现,不用折腾虚拟目录,下面给你拆解两种实操性强的方案:
方案一:使用Azure Front Door(推荐,适合全球分布式访问场景)
Front Door是Azure的全球CDN+负载均衡服务,非常适合需要跨区域访问优化的场景,步骤如下:
- 创建Front Door实例,在前端主机名处配置
www.example.com,完成后把你的域名DNS记录(CNAME)指向Front Door分配的默认域名(比如xxx.azurefd.net) - 添加两个后端池:
- 后端池1:选择你的UI App Service,设置优先级为1、权重为100(默认配置即可,按需调整)
- 后端池2:选择你的API App Service,同样配置优先级和权重
- 配置路由规则:
- 第一条规则:路径匹配设置为
/ui/*,路由到UI后端池,关键要开启路径重写,设置为/{remainingPath}——这样用户访问www.example.com/ui/page1时,Front Door会把请求转发给UI服务的/page1,自动去掉/ui前缀 - 第二条规则:路径匹配设置为
/api/*,路由到API后端池,同样设置路径重写为/{remainingPath} - 可选默认规则:如果用户直接访问
www.example.com,可以配置重定向到/ui,或者直接转发到UI服务
- 第一条规则:路径匹配设置为
- 启用HTTPS:在Front Door的自定义域名配置里,给
www.example.com开启HTTPS,可以选择Azure管理的证书(省心)或者上传自己的SSL证书
方案二:使用Azure Application Gateway(适合区域内访问,侧重内网/精细流量管控)
如果你的用户主要集中在某个Azure区域,Application Gateway是更适合的区域级负载均衡方案,步骤如下:
- 创建Application Gateway实例,选择公共IP作为前端IP,配置80和443端口的前端监听,把
www.example.com绑定到监听上 - 配置后端池:分别添加UI和API的App Service作为后端目标,注意要确保App Service的访问限制允许Application Gateway的IP(或者暂时放开“允许所有网络”,配置完成后再收紧)
- 配置请求路由规则:
- 规则1:路径匹配为
/ui/*,转发到UI后端池,开启路径重写为/{remainingPath} - 规则2:路径匹配为
/api/*,转发到API后端池,同样设置路径重写 - 默认规则:将根路径
/*转发到UI服务,或者重定向到/ui
- 规则1:路径匹配为
- 配置HTTPS:上传你的SSL证书到Application Gateway,绑定到443端口的监听
- DNS配置:把
www.example.com的A记录指向Application Gateway的公共IP
关键注意事项
- 两种方案都不需要在App Service里配置虚拟目录,路径重写会自动剥离前缀后转发给后端服务
- 要确保你的UI和API App Service本身可以通过默认域名正常访问,这样后端健康探测才能正常通过
- HTTPS配置是必要的,现在主流生产环境都要求加密访问,两种服务都支持Azure托管证书,不用自己维护证书续期
内容的提问来源于stack exchange,提问作者VKD
相关产品推荐
相关产品推荐

