Чтобы сделать кеш недействительным, я кодирую 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 и сделать недействительным URL-адрес запроса PURGE (не параметр).
Других решений пока нет …