令牌校验影响CDN缓存的解决方案

背景信息

如果您已经接入DCDN并配置了缓存规则,同时启用了WAF令牌校验,但是WAF在令牌校验时会在URL中随机插入参数,导致请求未能命中DCDN缓存规则,直接访问后端源站。这会增加源站的负载和压力,导致性能下降、响应时间延长,并增加潜在的安全风险。为了解决这一问题,您可以通过自定义CacheKey忽略这些参数,从而继续利用DCDN缓存,降低回源率。

前提条件

方案概览

本文以使用DCDN为例,配置自定义CacheKey只需2步:

  1. 配置自定义CacheKey:忽略URL中的被插入的随机参数,从而提高缓存的命中率,降低回源率,减少请求的响应时间和带宽消耗。

  2. 测试验证:对配置进行全面测试,确保缓存策略、WAF令牌校验和自定义CacheKey配置正确无误并正常运行。

说明

如果您使用的是阿里云CDN,则其配置方法相同。

架构图

image

步骤一:配置自定义CacheKey

1. 获取令牌参数名

在配置自定义 CacheKey 之前,您需要通过浏览器访问目标网站触发令牌校验以获取相关的参数名。

image

说明

令牌校验插入的参数名称针对不同域名是随机生成的,但某个域名下所有请求插入的令牌参数名是固定的,其格式为XXX__随机数字,其中XXX可以是下面任意一个单词。

timestamp、md5、type、ipcity、decode、encode、time、refer。

2. 配置自定义CacheKey

  1. 登录DCDN控制台,在左侧导航栏,单击域名管理后,单击目标域名操作列的配置

  2. 在指定域名的左侧导航栏,单击缓存设置,选择自定义CacheKey页签,单击配置

    说明

    支持对URI、请求参数、HTTP HEADER进行修改,同时支持自定义变量,从请求中提取需要的字段。最终的Cachekey将由URI、请求参数、HTTP HEADER、自定义变量四部分组合而成。

    image

  3. 自定义Cachekey对话框中,参数操作选择删除,并输入获取的令牌参数名。其他配置详情,请参见自定义Cachekey参数说明image

步骤二:测试验证

对配置进行全面测试,确保缓存策略、WAF令牌校验和自定义CacheKey配置正确无误并正常运行。

浏览器打开开发者工具访问网站,单击Network,查看Response Headers信息。如果存在X-Cache头且值包含HIT关键字,则表明配置生效命中缓存数据。

说明

X-Cache表示是否命中缓存,MISS表示不命中,HIT表示命中。

image