【问题标题】:Azure CDN with Rewrite Rules带有重写规则的 Azure CDN
【发布时间】:2014-12-19 16:12:46
【问题描述】:

我有一个 Azure CDN,其中包含我的域的网站来源,它自动选择了 www.mydomain.co.uk(我无法更改它)。我宁愿不使用存储源,因为我有来自 Github 的自动部署。因此,azxxxxxxx.vo.msecnd.net 将从 www.mydomain.co.uk 检索内容并将其缓存在本地。

但是,我有一个 URL 写入规则,它将 www.mydomain.co.uk 重定向到 mydomain.com(出于各种 SEO 原因)。这将导致对 CDN 内容的请求返回 301 重定向,而不是向 CDN 提供内容以供其缓存。当 Azure CDN 请求内容时,是否有某种方法可以停止 URL 重写?

非常欢迎您在https://github.com/brentnewbury/PersonalSite/blob/master/web.config查看代码和 URL 重写规则

【问题讨论】:

  • 对于 CDN,您使用 /cdn 路径,您可以从 URL 重写规则中排除该路径吗?
  • 嗨,Erik,你看到的包含 /cdn 的代码是我最终想出的。昨晚我打算将其发布为答案,但已经有点晚了。

标签: azure url-rewriting azure-web-app-service azure-cdn


【解决方案1】:

对于可能想知道我如何解决问题的其他人,我决定编写一个 URL 重写规则(见下文),以查找 /cdn/ 并将其路由并不再处理其他规则。这似乎工作得很好。这意味着对于存储在 /img/pic.jpg 中的图像,我的 HTML 中的引用看起来像 //azxxxxxxx.vo.msecnd.net/cdn/img/pic.jpg

<rule name="CDN Passthrough" stopProcessing="true"> 
   <match url="(.*)(cdn/)([\S]+)" /> 
   <action type="Rewrite" url="{R:1}/{R:3}"/> 
</rule> 

【讨论】:

  • 所以您将所有 CDN 资产存储在 /cdn/ 下?我遇到了同样的问题。如果 Azure CDN 知道您启用并使用了自定义域,那就更好了。你用插槽做什么...?由于这些原因,也许 blob 存储更好,不确定。我将为 CDN 来源尝试“自定义来源”。
  • 我所有的资产都存储在根目录下的文件夹中。当时,Azure CDN 选择了现在已更改的源域),但它选择的源域(.co.uk)有一个 301(到 .com),因此资产没有从 CDN 加载。所以我添加了规则“CDN Passthrough”,它将删除“cdn/”文件夹,重写 URL,并停止处理其他规则(301 重定向)。见github.com/brentnewbury/PersonalSite。希望这会有所帮助。
  • 我让它(我认为)与自定义来源(我的主域)一起工作。但是,我仍然对“cdn”文件夹的来源感到困惑。如果您没有 CDN 文件夹,Azure CDN 是否会在所有请求前加上“cdn/”?例如“cdn/images/foo.png”?编辑:我看到你的 CDN 域是 xxxx.com/cdn,我的不是,所以也许这就是我感到困惑的原因。
  • /cdn 路径将被 web.config 中的 URL 重写规则剥离。该规则还告诉 IIS 不处理其他规则会导致 301 重定向,因为 Azure CDN 从我的 Azure 网站中选择了错误的域。但是您现在可以选择自定义来源(如您所见)。 /cdn 路径实际上从未存在过。
  • 没有文件存储在 /cdn 文件夹下。我只需要一种方法来告诉 IIS “嘿,当来自 Azure CDN 的 brentnewbury.co.uk/cdn/some-resource 请求进入时,请提供 brentnewbury.co.uk/some-resource 并且不要打扰 301 重定向到 brentnewbury.com 我告诉你重定向用户早点。”
猜你喜欢
  • 1970-01-01
  • 2020-03-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多