如何在Azure App Services中使用通配符绑定从自定义插槽上的自定义域移动到生产插槽

时间:2020-01-13 15:35:40

标签: azure dns azure-web-app-service cname

在Azure App Services中,我运行一个处理多个租户Web流量的Web应用程序。大多数流量流向一个插槽。但是有几个运行在单独的插槽中。我希望将所有流量合并到使用通配符表达式接受流量的单个插槽,并因此删除运行特定租户的插槽。

示例

  • someapp.somehostname.com(somaapp插槽)
  • *。somehostname.com(生产版位)

前提条件

  1. DNS记录在Azure外部。不使用Azure DNS。
  2. 如前一篇文章所述,删除CNAME不会影响处理传入请求的插槽。服务请求的位置仍然是相同的。 Remove CNAME after Azure has verified the domain
  3. 主插槽(生产)配置为接收每个先前配置的100%传入流量。

问题

  • 我应该删除自定义域并期望主插槽接管流量吗?
  • 或者,我应该在生产插槽中添加新的自定义域“ someapp.somehostname.com”吗?
  • 还是以上两者?

2 个答案:

答案 0 :(得分:1)

说实话,不确定您要做什么。但是,我认为当您在应用程序服务中添加自定义域时,这些要点可能会对您有所帮助。

部署槽是具有自己的主机名的实时应用。每个应用程序在各自的插槽上都有各自的主机名。 SSL绑定中的SSL证书应与每个插槽中所选的自定义域匹配。如果您要配置自定义域作为示例,

mSavedStateViewModel = new ViewModelProvider(this,new SavedStateViewModelFactory(getApplication(),this)).get(SavedStateViewModel.class);

例如,您将在Azure DNS(或您的DNS区域提供商)上创建这样的DNS记录。 enter image description here

经过我的验证后,如果您在DNS区域中删除了app1.somehostname.com (somaapp slot) *.somehostname.com (production slot) CNAME,则仍应使用主机名awverify.app1在单独的插槽中访问Web应用程序,因为app1.somehostname.com用于由于存在CNAME awverify.app1映射,因此仍可以将域验证和主机名app1.somehostname.com解析到您的单独插槽中。 DNS检查器here的结果。 enter image description here

但是,如果您删除主机名app1的CNAME记录app1awverify.app1,主机名app1.somehostname.com将被解析到您的生产版位,因为它具有通配符自定义域。 enter image description here

最后,如果要访问插槽中的Web应用程序,则应配置一个CNAME记录映射到插槽URL的主机名。

让我知道是否需要进一步的帮助。

答案 1 :(得分:0)

如果我记得在没有通配符的情况下正确删除了一个 CNAME 会使该特定插槽停止响应 Web 请求。我认为它并没有自动重新分配流量。此外,还设置了 ARRAffinity 令牌。

我的解决方案如下;再次删除它们添加和通配符。显然,这不是您想在高峰时段做的事情。