首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure CDN -请求主机名与原始主机名不同

问Azure CDN -请求主机名与原始主机名不同
EN

Stack Overflow用户
提问于 2022-03-17 04:41:46
回答 1查看 363关注 0票数 0

假设我们在Azure CDN端点上有一个自定义域名(例如,自定义域是www-mydomain-com),它使用Azure CDN托管证书。

CDN端点的来源是运行在原产地类型= Web上的WordPress。

azurewebsites本机主机名是。应该注意的是,目前Azure应用程序服务还添加了相同的自定义域(www-mydomain-com),并添加了一个有效的公开信任证书。

用于www-mydomain-com的DNS CNAME解析为Azure CDN端点主机名(mydomain-azureedge-net)。

根据Azure门户提供的工具提示设置CDN端点原点是空白的,如Azure门户提供的工具提示:“与每个请求一起发送到源的主机头值。如果保留此空白,请求主机名将确定此值。Azure CDN源(如Web应用程序、Blob存储和云服务)默认要求该主机头值与原始主机名匹配。”

这一切都很好。通过日志记录,我们可以确认客户端请求www-mydomain-com和对源的请求也是www-mydomain-com。

如果我们将原产地主机头更改为mydomain-azurewebsitesnet,那么我会看到一些奇怪的行为。

客户端请求www-mydomain-com -和页面正常加载-我可以确认这是一个缓存错过。

客户端对另一个URL的请求- www-mydomain-com/test -这同样是缓存丢失,但是日志显示了对原产地的调用-主机名就像预期的一样设置为mydomain-azurewebsites。

奇怪的是,客户端被定向到mydomain-azurewebsites/test,而不是www-mydomain-com/test。

如果客户端重新请求www-mydomain/test,则页面将从缓存中正常加载。

似乎原始客户端请求是使用原始主机头(在缓存丢失上)代理到原点的。我所期待的是,请求只提供给来自Azure CDN的客户端,并且CDN在需要时将内容从源文件提取到缓存中(使用set原始主机头)。

我想要实现的是不必在achieve上添加一个公开可信的证书(只需依赖azurewebsite来获得CDN到原始TLS连接)。

我在这里遗漏了什么吗?还是这仅仅是Azure CDN的一个限制(我没有使用Verizon或Akamai Azure CDN)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 22:59:53

我记录了一张MS罚单,在故障排除过程中,我有了一个灯泡时刻。调用mydomain-azurewebsitesnet主机头将导致后端WordPress将带有相对链接的页面加载到带有主机mydomain-azurewebsitesnet的缓存中。这意味着页面中的所有链接--即使是从缓存中获得的链接,也可以引用原始主机。一个解决办法是与主机www-mydomain进行硬代码链接--这并不理想。

不知道我为什么会这么想,但是进一步的测试显示,Azure CDN调用使用HTTPS --要求原产地证书的主机头在证书上,但证书不一定要在其有效日期之内。也就是说,您可以使用具有正确主机名的过期证书。

这使我能够实现我最初的目标。

Azure CDN -离开原始主机标题空白-这意味着客户端主机头通过源请求-意味着我的链接所有工作正常。源WebApp使用已过期的证书,其中列出了正确的主机(与客户端发送的主机匹配)。从CDN到HTTPS原点的请求仍然有效。

这允许我使用Azure CDN提供和管理的TLS证书(由DigiCert颁发),而不必担心更新和管理Azure应用服务WebApp上的证书(过期的证书仍然有效)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71507197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档