You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Premium CDN令牌认证后URL重写至Blob SAS签名配置问题

解决Azure Premium CDN令牌认证后URL重写至带SAS的Blob存储地址问题

我之前帮不少用户处理过Azure Premium CDN搭配令牌认证+SAS访问Blob的场景,结合你已经搞定令牌认证和SAS生成的情况,咱们直接聚焦URL重写的配置步骤:

1. 先给规则加个触发条件:只处理认证成功的请求

首先得确保只有通过令牌认证的请求才会进入重写流程,不然安全性就打折扣了。在Premium CDN的规则引擎里新建规则时,先添加条件:

  • 条件类型选「Token Authentication」
  • 操作选「Matches」
  • 值填「Success」

这样一来,只有令牌验证通过的请求才会触发后续的重写动作,完美契合你不降低安全性的需求。

2. 配置URL重写动作,把CDN请求映射到带SAS的Blob地址

接下来添加「URL Rewrite」动作,这是核心步骤:

  • Rewrite Type:一定要选「Destination」,因为我们要修改CDN向后端Blob存储发起请求的目标URL,而不是修改用户看到的前端URL
  • Source Pattern:根据你的CDN请求路径来写,比如如果用户访问的是https://your-cdn-endpoint.azureedge.net/xxx.jpg,就用/(.*)来匹配所有路径($1会捕获后面的xxx.jpg部分);如果你的CDN路径有前缀(比如/assets/xxx.jpg),就写/assets/(.*)
  • Destination:填写Blob存储的基础地址+路径占位符+你的SAS令牌。举个实际例子:
    假设你的Blob存储账户是mystorage,容器是mycontainer,SAS令牌是sv=2023-11-03&ss=b&srt=o&sp=r&se=2024-12-31T23:59:59Z&st=2024-01-01T00:00:00Z&spr=https&sig=xxxxxx,那目标地址就是:
    https://mystorage.blob.core.windows.net/mycontainer/$1?sv=2023-11-03&ss=b&srt=o&sp=r&se=2024-12-31T23:59:59Z&st=2024-01-01T00:00:00Z&spr=https&sig=xxxxxx
    这里的$1会替换成源模式捕获到的路径部分,保证请求的Blob文件对应正确
  • Preserve Query String:选「No」,因为我们已经把SAS参数写在目标地址里了,不需要保留用户请求里的其他查询参数(如果有特殊需求要保留,再选Yes,但要注意SAS参数的优先级)

3. 几个关键注意事项

  • SAS有效期问题:如果你的SAS是短期的(比如24小时内过期),直接硬编码在规则里肯定不行。这时候可以用Azure Function动态生成SAS:给Function配置Blob存储的托管身份权限,让它根据请求的Blob路径生成短期SAS,然后在CDN规则里先加「Fetch External Content」动作调用这个Function,把返回的SAS存到自定义变量(比如{var:sasToken}),最后在重写的目标地址里用$1?{var:sasToken}引用
  • 路径匹配要精准:如果CDN的请求路径和Blob的存储路径不一样(比如CDN是/images/xxx.jpg,Blob是/media/xxx.jpg),记得调整源模式和目标路径,比如源模式写/images/(.*),目标地址写https://mystorage.blob.core.windows.net/media/$1?<sas>
  • 规则顺序别搞反:令牌认证的规则要放在重写规则前面,规则引擎是按从上到下的顺序执行的,得先验证令牌再重写URL
  • 测试验证:用curl或者浏览器开发者工具测试:先不带令牌请求CDN URL,应该返回403;带有效令牌请求后,看网络请求的响应来源是不是你的Blob存储,或者用curl -v看CDN的转发逻辑是否正确

内容的提问来源于stack exchange,提问作者UCS_edb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:27:52