如何在 Varnish VCL 中提取和解码 base64 参数

How to extract and decode base64 parameter in Varnish VCL

为了使缓存无效,我按以下方式对 url 进行编码:

$clean_url = base64_encode( $url );

http://url_of_the_varnish_host_to_clean/clean/url?v=$clean_url

我想捕获这个 url 以在我的 vcl 文件中清理和解码它。 我是这样收到请求的:

if (req.url ~ "^/clean/url?v=") 

但是我不知道如何捕获参数并对其进行解码。

您至少需要 vmod_digest,它提供 digest.base64_decode 功能。

另外,你的正则表达式有点不对,应该是:

if (req.url ~ "^/clean/url\?v=") 

也就是说,为什么您的失效逻辑必须如此复杂?为什么不以标准方式进行 - 即检查清除器 IP 与定义的 ACL 的匹配并使 PURGE 请求(不是参数)的 URL 无效。