清漆正则表达式或 for if (bereq.url ~ "

varnish regex or for if (bereq.url ~ "

我尝试为 varnish 缓存 v4 创建一个正则表达式

sub vcl_backend_response {


 if (bereq.url ~ "(/media|/bundles|/sonata_admin/|/build)$" ) {

{
        unset beresp.http.set-cookie;
        set beresp.http.cache-control = "public, max-age=2592000";
        set beresp.ttl = 30d;
        return (deliver);
    }

我也试试

 if (bereq.url ~ "(\/media|\/bundles|\/sonata_admin|\/build)$" ) {

我想包括所有位置从 /media 或 /bundles 或 ...

开始的文件

这行不通

在您的配置中,它不起作用,因为您正在匹配代表 "at the end of string" 的 $

您想使用 ^ 即 "match at the beginning",因此:

if (bereq.url ~ "^/(media|bundles|sonata_admin|build)") {
    unset beresp.http.set-cookie;
    set beresp.http.cache-control = "public, max-age=2592000";
    set beresp.ttl = 30d;
    return (deliver);
}