Configuration

Varnish:如何為帶有 cookie 的動態頁面添加例外

  • February 21, 2011

我想知道避免使用 Varnish 記憶體網站的“某些頁面”並記憶體所有其他頁面的正確方法是什麼。

這就是我試圖用 vcl conf 做的事情:

    sub vcl_fetch {
        #set beresp.ttl = 1d;
        if (!(req.url ~ "/page1withauth") ||
            !(req.url ~ "/page2withauth")) {
           unset beresp.http.set-cookie;
        }
        if (!beresp.cacheable) {
            return (pass);
        }
        if (beresp.http.Set-Cookie) {
            return (pass);
        }
        return (deliver);
}

謝謝

通常,這將在 vcl_recv 中完成:

sub vcl_recv {
 if ( req.url !~ "^/page1withauth" && req.url !~ "^/page2withauth" )
 {
   unset req.http.Cookie;
   remove req.http.Cookie;
 }
}

然後,您應該從伺服器返回 set-cookie 參數的唯一時間是您嘗試唯一標識連接時。如果是因為他們剛剛發布或類似的,那已經可以逃避記憶體了。如果是因為您只是想唯一標識它們,那麼問題在於您的應用程式碼故意破壞了 Varnish;如果可以,請修復您的應用程序,否則您可以覆蓋 vcl_fetch ,類似於您在此處所做的。

引用自:https://serverfault.com/questions/236817