从Azure CDN向某些用户提供某些文件

从Azure CDN向某些用户提供某些文件,azure,azure-cdn,Azure,Azure Cdn,假设我有一个由Azure CDN端点提供服务的网站(通过已上载到blob存储的文件) 我希望缩小的网站内容对每个人都可用——这一部分很容易,因为CDN默认就是这样做的 理想情况下,我还可以在同一个CDN上使用sourcemaps(这样在我的js文件中,/#sourceMappingURL=0-8d1d0e3cc4594b2c2758.js.map的默认行为将“正常工作”)。但是,我希望这些源地图只提供给一部分用户 有没有办法实现这个场景?我很乐意以任何方式定义“子集”,以使该场景能够正常工作(例

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

我希望缩小的网站内容对每个人都可用——这一部分很容易,因为CDN默认就是这样做的

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

有没有办法实现这个场景?我很乐意以任何方式定义“子集”,以使该场景能够正常工作(例如,连接到某个VPN或位于某个IP地址范围内;或者使用Fiddler设置一个秘密头;等等)


谢谢

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

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

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

这些规则引擎允许您通过对传入请求定义一组可能的匹配条件以及在匹配条件适用时要执行的操作,自定义如何处理HTTP请求

Azure CDN提供两种类型的规则引擎,一种用于Microsoft的Azure CDN,另一种用于Verizon,后者提供更高级的功能

您如何使用这些规则引擎在很大程度上取决于您需要如何识别您的用户组,以及您想要做什么来调节应用程序对sourcemap请求的响应

例如,标准规则引擎之一(也可在premium规则引擎中使用)是请求的来源:也许这是区分不同用户子集的一个好标准

或者,正如您使用Fiddle所建议的那样,您可以分析传入数据以搜索自定义数据

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

<>用户一旦被识别,系统就必须根据用户是否属于一个或另一个组来考虑采取的动作。 规则和引擎都提供了与此目的相关的规则

我认为,如果您可以使用规则引擎,那么最好的选择是对不属于允许访问sourcemaps的组的用户发送的HTTP请求进行访问

其他选项,尽管我认为如果您使用webpack和SPA,则更难实现,可以是从一部分用户接收到的对包含sourcemaps的特定文件的请求,或者如果您在前端使用SPA,则对不同的
index.html
页面的请求,每个页面具有不同的js和css资源,使用sourcemaps或不使用,或直接交付一组不同的文件

另一个可能的操作可能是在缩小的文件中不包含内联源地图位置,并利用指向实际源地图的和
Append
a的功能。此标头将仅针对所需的用户组发送。同样,根据您构建前端的方式,这不是一项容易的任务


最后,如果您使用Webpack和构建前端,则可以在生产中使用
publicPath
选项将源映射指向非公共、更面向开发人员的URL位置。这是本章所采用的方法。我认为这种方法也值得研究。

有趣的问题。正如一个想法:发布到两个实时环境是否可行?一个是公共环境,另一个环境有sourcemaps可用,但只能访问特定的IP范围,例如@Ozone,有两个环境会在我们的特定设置中引入许多复杂因素。。。因此,虽然技术上可行,但这是非常不可取的。我很想知道是否有一种方法可以通过单个CDN端点实现。您好@MichaelZlatkovsky Microsoft。请您能更详细地描述一下您的用例吗?我认为这将有助于更好地理解您的问题。如果您需要安全解决此问题,可能会很有用,尽管我在那里的答案不是通过azure完成的,因此不确定配置是否为一对一。谢谢,这里有很多好的选项!我会在有机会的时候尝试一种或多种方法,并在有机会实施后报告。另外,感谢您的编辑和添加的解释,这真的很有帮助!不客气,迈克尔。我很高兴听到这个答案很有帮助。如果你认为我能帮上什么忙,请不要犹豫再联系我,我很乐意帮助你。