如何防止 azure cdn 提供动态内容?

How to prevent azure cdn from serving dynamic content?

如何防止 azure cdn 提供动态内容?我只希望它提供静态文件:图像、脚本和 css,但是当我选择我的 Web 应用程序作为来源时,它也提供根 url (/),这是一个动态页面。我可以根据文件扩展名创建限制吗?

暂时没有。对 CDN 边缘节点的任何请求都将命中资产的来源并缓存它,无论它是动态内容还是静态内容。那么,解决方案是确保您的应用程序不会 link 通过 CDN 访问任何动态内容。

如果您的静态内容位于特定文件夹(images/、css/ 等),您可以防止 CDN 访问这些文件夹之外的内容。

为了防止搜索引擎通过 CDN 域将我们的站点编入索引,我们 通过将以下 urlRewrite 规则添加到 web.config:

来禁用 CDN 域上的站点浏览(一组特定的资源文件夹除外)
<rule name="Deny site browsing on CDN domain" stopProcessing="true">
  <match url="^(storage/|ui/)(.*)" negate="true" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTP_X_HOST}" pattern="\.azureedge.net$" />
  </conditions>
  <action type="CustomResponse" statusCode="404" statusReason="Not found" statusDescription="Not found" />
</rule>

使用网络服务器作为 CDN 来源是 "lazy" 设置 CDN 的方法。设置好后,在您的网站中而不是使用:

/mypic.jpg

替换所有相关的url
xxx.azureedge.net/mypic.jpg

你真的不需要关心 CDN 是否提供动态内容,你只需要选择你想要的内容。 CDN 只是盲目地提供您指定来源的内容。