azure - 仅将 Azure CDN 中的某些文件提供给某些用户

标签 azure azure-cdn

假设我有一个由 Azure CDN 端点提供服务的网站(通过已上传到 Blob 存储的文件)。

我希望每个人都可以使用缩小的网站内容 - 这部分很简单,因为这就是 CDN 默认执行的操作。

理想情况下,我还可以在同一个 CDN 上使用源映射(这样我的 JS 文件中的 //# sourceMappingURL=0-8d1d0e3cc4594b2c2758.js.map 的默认行为将“正常工作” ”)。但是,我希望这些源映射仅提供给一小部分用户。

有没有办法实现这个场景?我很乐意以任何方式定义“子集”,以使这种情况发挥作用(例如,连接到某个 VPN 或处于某个 IP 地址范围内;或者使用 Fiddler 设置 secret header ;等等)

谢谢!

最佳答案

我假设您需要构建一个系统,在生产中允许向特定用户组(例如开发团队)提供源映射,但不是所有人,源映射不应公开访问.

有不同的替代方案可以帮助实现这一目标。

一方面,我们可以尝试使用规则引擎来分析接收到的 HTTP 流量,并根据认为适当的标准提供一个或另一个响应。

这些规则引擎允许您自定义 HTTP 请求的处理方式,方法是在传入请求上定义一组可能的匹配条件,以及在匹配条件适用时要执行的操作。

Azure CDN 提供两种类型的规则引擎,一种 standard rule engine适用于 Microsoft 的 Azure CDN,以及 other premium来自 Verizon,它提供了更高级的功能。

如何使用这些规则引擎很大程度上取决于您需要如何识别您的用户组以及您想要如何调整应用程序对源映射请求提供的响应。

例如,标准规则引擎之一 match conditions - 也可在高级规则引擎中使用 - 是 remote IP address请求来自哪里:也许这可能是区分不同用户子集的一个很好的标准。

或者,正如您建议的使用 Fiddle,您可以分析传入的 request header寻找定制的。

Azure CDN Verizon Premium 规则引擎提供更高级的 match conditions基于浏览器、设备类型等。

一旦识别出用户,系统必须根据他们属于一个组还是另一个组来考虑要采取的操作。

两者都是standardVerizon规则引擎提供了可能与此目的相关的内容。

我认为最好的选择,如果你可以使用Verizon规则引擎,将是deny access不属于允许访问源映射的组的用户发送的 HTTP 请求。

其他选项,尽管我认为如果您使用 webpack 和 SPA 则更难实现,可以是 redirect从一组用户收到的对包含源映射的某些文件的请求 - 或者如果您在前端使用 SPA,则对不同的 index.html 页面发出请求,每个页面都具有不同的 js 和 css 资源,带有源映射或不是-,或rewrite the URL直接交付一组不同的文件。

另一个可能的操作可能是不在缩小的文件中包含内联源映射位置,并利用 modify response headers 的功能并附加 SourceMap header相反,它指向实际的源映射。该 header 只会发送给所需的用户组。同样,根据您构建前端的方式,这不是一件容易的任务。

最后,如果您使用 Webpack 和 SourceMapDevToolPlugin要构建前端,您可以在生产中使用 publicPath 选项将源映射指向非公开的、更面向开发人员的 URL 位置。这是 this article 中遵循的方法。 。我认为这个方法也值得研究。

关于azure - 仅将 Azure CDN 中的某些文件提供给某些用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64084242/

相关文章:

https - 如何在 Azure CDN 中重定向到 HTTPS

c# - 有没有办法强制将 Azure CDN 文件作为浏览器附件下载?

azure - microsoft azure - 资源组与容器组

azure - ADO 查询中的多个项目

python - Django - 使用进度条将文件上传到云(Azure blob 存储)

Azure Verizon CDN - 100% 缓存 CONFIG_NOCACHE

azure - Azure CDN 中的免费规则

Azure CDN 将 URL 重写为 index.html 不起作用

linux - 使用适用于 Linux 的 Azure 命令行工具创建虚拟机

azure - 如何复制 Azure Functions 应用程序?