问题标签 [azure-cdn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
523 浏览

azure - Microsoft Azure CDN 与媒体流服务

因此,我正在开发一个应用程序,管理员可以在其中上传视频,供其他人在不同平台(移动设备、计算机等)上查看。它将托管在 Azure 上,我很难确定是否需要使用媒体服务或只是 CDN。

什么时候使用媒体服务而不是简单地上传到 blob 并通过 CDN 查看更有意义?使用一个比另一个有什么优势?

0 投票
1 回答
1006 浏览

azure - 使用 Azure CDN 缓存 rest api

我刚刚看到这篇文章。事实证明,Fastly 的 CDN 提供了对缓存 rest api 响应的支持。这看起来像是减轻您自己的服务器和数据库的完美解决方案。特别是如果查询/命令比率非常高。基本上它是这样工作的:

  1. 命令(DELETE / POST / PUT)请求必须由您的服务器处理
  2. 命令完成后,您的 API 向purgeCDN 发送请求
  3. 响应purge请求 CND 查询您的 api 以获取新结果并将其缓存
  4. 当用户查询资源时,请求由 CDN 处理,根本不会打扰您的服务器

它们提供了一个配置界面,您可以在其中定义缓存规则。

Azure CDN 是否提供相同类型的功能?我在网上找不到任何关于它的信息。

0 投票
1 回答
1058 浏览

azure - Azure 媒体服务消费统计

将 Azure 媒体服务和 Azure 媒体播放器与 Azure CDN 一起使用,是否可以收集有关视频已播放秒数/分钟数的统计信息?

如果用户向后或向前跳怎么办?假设视频长度为 5 分钟,但用户向前跳了 2 分钟,并且在 5 分钟中总共观看了 3 分钟,我可以得到真实的观看时间吗?

0 投票
3 回答
460 浏览

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

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

0 投票
1 回答
376 浏览

azure-cdn - 可以重复使用 Azure CDN 终结点名称吗?

为什么我不能重用以前删除的端点的名称?例如,如果我创建一个名为“acme-cdn1”的端点,将其删除,然后尝试创建一个具有相同名称的新端点,我会收到以下消息:“错误,该端点名称已存在。” 是否有必要删除整个 CDN 配置文件才能重用旧端点名称?

0 投票
1 回答
840 浏览

azure - Azure CDN 自定义域不起作用

我正在尝试设置 CDN。我测试了 CDN,使用这个脚本效果很好

但是,问题是当我改变时:

到我的自定义域

正如您从这个屏幕截图中看到的那样,我使用 Network Solutions 创建了一个 CNAME,它被 Azure 接受了。

CDN 截图

我正在阅读这篇文章,它说创建自定义域时可能会有延迟,但自创建自定义域以来已经 13 小时。

创建自定义域

CNAME 截图

CNAME 截图

我不知道从这里去哪里。

0 投票
1 回答
114 浏览

performance - 日本的 azure cdn edge 没有响应

我在 Azure(西欧)中运行了一个网络服务器( http://www.mycompany.com ),它向用户显示了很多图像。

我在瑞典的客户可以使用此配置。小缩略图和大版本的图像都会显示出来,而且速度很快。

日本的用户可以毫无问题地查看缩略图 (2KB),但下载大图像 (500KB) 需要几分钟,即使通过高性能光纤连接也是如此。当我在日本征用一台计算机并强制 cdn.mycompany.com 指向93.184.221.200(这是瑞典的 Azures edge)时,以合理的速度下载了相同的图像!它还可以直接从resizer.mycompany.comBlob Storage获取图像。

我已经尝试诊断了一个星期,但不知道如何继续。

  • 日本的 CDN Edge 有问题吗?
  • 是日本的CDN Edge与西欧的WebApp距离太远的问题吗?
  • 我在 WebApp 或 Blob 存储上是否有我没有意识到的性能问题?(有很多日本用户同时访问网站)

(上面的网址显然是混淆的)

0 投票
1 回答
870 浏览

visual-studio - 如何在不编写脚本的情况下将静态文件发布到 Azure CDN

我发现一篇旧文章解释了如何将静态文件放入我的 Visual Studio 项目 /cdn 文件夹中,然后将它们上传到 Azure CDN。

在网上搜索更新的内容后,我发现的唯一解决方案涉及配置文件和 powershell 脚本。

我正在寻找一个 Visual Studio 插件/插件或 nuget 包,甚至是 VS 中的一个功能,我不知道这可以让我使用 GUI / 向导将静态文件的 /Content 文件夹保留在 Azure CDN 上,这将重新路由那些 css/ js/img 自动引用cdn。

似乎这已经存在,但我无法找到它。

0 投票
1 回答
807 浏览

azure - 如何防止恶意带宽吸血鬼请求滥用 Azure CDN 带宽?

只是为了让人们知道,我确实按照一些人的建议稍微编辑了帖子,并且该问题已在此处发布在 Azure CDN 论坛上。我也将它发布在 StackOverflow 上的原因是为了尝试接触更多的受众,希望处理过相同/类似问题的人们可以提供有价值的解决方案/反馈。据我所知,目前还没有解决此问题的方法,但它会影响任何使用 CDN 交付其内容的企业。我愿意进一步编辑这个问题,但我要问的是,人们不会简单地否决这个问题,因为这听起来像“咆哮”,事实并非如此,我可以向你保证它会影响成千上万的企业在那里,无论人们是否意识到,每年都要花费数千美元。

所以这里的情况。假设我正在构建一个图片库网站,并且我想使用 Azure CDN 为我提供我的内容。在后端,Azure CDN 将从 Azure 存储帐户中提取内容。CDN 速度快且功能强大,但它似乎有点不安全,因为它会阻止某人能够提取大量内容,从而给用户留下巨额带宽费用。让我证明我的意思。

所以昨晚我决定写一个简单的控制台应用程序,它会从我未来的图片库网站下载一个简单的图像,在一个 for{} 循环中,代码如下:

此控制台应用程序对托管在我的 Azure CDN 端点上的图像文件发出 1000 个超快速连续请求,并将它们保存到我 PC 上的“D:\Downloads”文件夹中,每个文件名对应于 for{} 循环迭代,即image1.jpeg、image2.jpeg等。

那么刚刚发生了什么?在大约 1 分钟的时间内,我花费了自己 140MB 的带宽。这是一个高级 CDN,价格为 0.17 美元/GB,让我们一起算一下:0.14GB * 60 分钟 * 24 小时 * 30 天 * 0.17 美分/GB = 1028.16 美元的带宽成本,如果有人(例如竞争对手)想要制作一个在一个月内对单个图像的单个请求会危及我的网站。我想你们可以看到我的目标......我的网站将有数千张高分辨率图像,顺便说一句,我在这个例子中使用的图像大小只有 140KB。这些类型的请求可以来自匿名代理等。

所以我的问题是:如何防止有人滥用公开的 CDN 端点?显然,一个人不能因为恶意请求而为带宽支付 5,000 美元、20,000 美元。

现在 Azure Premium CDN 有一个高级规则引擎,它可以根据 Referer 过滤掉请求,并在 Referer 与您的网站不匹配的情况下响应 403 错误。但是,Referer 可以被伪造,就像我在上面的代码示例中所做的那样,并且 CDN 仍然允许提供请求(我使用 Referer 欺骗进行了测试)。这很糟糕,很多人使用Refer来防止'盗链',但是在这种带宽滥用的情况下,如果Referer可以通过一行代码来伪造又有什么关系呢?

关于防止此类滥用和巨大的带宽成本,我有几个想法:

*这两种解决方案都需要 CDN 采取行动:

  1. 当内容请求到达 CDN 时,CDN 可以调用客户端服务器,传入 a) 用户的 IP 地址 b) 请求的 CDN Uri。然后客户端服务器会检查从这个特定 IP 请求 Uri 的次数,如果客户端逻辑看到它在过去一分钟内被请求了 100 次,那么显然这将表明滥用,因为浏览器缓存图像,而恶意请求则不会。所以客户端机器会简单地回复“假”来为这个特定的请求提供内容。这不是一个完美的解决方案,因为对客户端基础设施的额外回调会导致一小段延迟,但这绝对比可能被困在看起来像您在银行储蓄账户中的金额的账单上要好。

  2. 更好的解决方案。对每个 ip 在特定时间范围内通过 CDN 提供文件的次数进行了限制。例如,在上面的图像文件示例中,如果可以将 CDN 配置为在 10 分钟的时间范围内服务不超过 50 个图像请求/IP/。如果检测到滥用,则 CDN 可以在客户定义的时间内 a) 为特定的滥用 uri 提供 403。或 b) 如果请求来自滥用者 IP,则所有 uri 的服务器 403。所有时间/选项都应该留给客户配置。这肯定会有所帮助。这里没有回调可以节省时间。缺点是 CDN 必须跟踪 Uri/IP 地址/命中数。

哪些解决方案不起作用:

  1. 签名 URL 将不起作用,因为签名查询字符串参数每次都会不同,并且浏览器会不断地请求数据,从而有效地清除浏览器对图像的缓存。

  2. 拥有 azure blob 的 SAS 访问签名也不起作用,因为 a) Uri 每次都不同 b) 授予 SAS 后,您可以请求 blob 的次数没有限制。所以滥用场景仍然是可能的。

  3. 检查您的日志并简单地通过 IP 禁止。我昨天通过匿名代理测试了这种类型的滥用,它就像一个魅力。在几秒钟内切换 IP 并继续滥用(我自己的内容)以进行测试。所以这也被淘汰了,除非有一个保姆来监控日志。

可行但不可行的解决方案:

  1. 在您的 Web 服务器上过滤请求。当然,这将是控制问题和跟踪请求/IP 数量的最佳方式,并且在检测到滥用时根本不提供内容。但是,您失去了不通过超快速、接近客户端优化的 CDN 交付内容的巨大好处。此外,通过提供大字节内容(例如图像)会大大降低您的服务器速度。

  2. 只需咬紧牙关,不要担心。嗯...那么您知道可以将您的车轮取出的坑洼就在路上,所以不,使用此选项感觉不舒服。

综上所述,Azure 提供的带有自定义规则引擎的高级 CDN 产品可能会在某处提供解决方案,但文档非常差,并且缺乏示例,人们只能猜测如何正确保护自己,所以这就是为什么我要写这篇文章。有没有人解决过这样的问题?以及如何解决它?

任何建议表示赞赏,我对这个问题持开放态度。

感谢您的阅读。

0 投票
1 回答
11675 浏览

azure - 如何授权请求 Azure REST API?

我正在创建一个程序来删除 CDN 缓存。所以我按照文档说的做了,我仍然得到这个:

{ "error": { "code": "AuthenticationFailedInvalidHeader", "message": "身份验证失败。'Authorization' 标头以无效格式提供。" } }

所以它基本上说身份验证令牌本身格式错误(没有错误或过期)。即使我按照文档的建议做了。

我的请求-响应流程如下所示(我混淆了真实数据):

你能建议解决它的方法吗?