2013-08-16 114 views
0

我試圖,因爲很長一段時間,把一個工作清漆(3.0.4)在我的一些網站的前面。 我從一個乾淨的配置文件(提供清漆,「/usr/share/doc/varnish/examples/default.vcl.gz」)開始。清漆刪除Cookie時刪除PHPSESSID

嗯,它的工作,但它似乎並沒有緩存任何東西(我添加標題看到它:https://www.varnish-cache.org/trac/wiki/VCLExampleHitMissHeader)。

因此,我增加論文線到我的sub_recv:

if (req.url ~ "\.(png|gif|jpg|jpeg|js|css|ico|pdf)$") {  
unset req.http.Cookie;  
    } 

只要我把這些線,我會是裝了一些照片後下探,並varnishlog告訴我日誌型動物PHPSESSID的:

16 RxHeader  c Cookie: PHPSESSID=gkl02227ef1iq4joai0tsbi026 
23 TxHeader  b Cookie: PHPSESSID=oomupd8tnvirpn8eamsertuih4 
... 

全部default.vcl已經張貼在這裏:http://pastebin.com/gmdym1sr

編輯:也許有一定的重要性,但圖像被稱爲包含「HTTP鏈接:/ /domain.com/?t=Thb & f = picture.jpg「(PhotoShow gallery)

你有什麼想法嗎?提前致謝!

回答

2

你必須對圖像Cookie的過濾回你的客戶:

sub vcl_fetch { 
    // ... Line .82 in your pastebin 
    if (req.url ~ "\.(png|gif|jpg|jpeg|js|css|ico|pdf)$") {  
    unset beresp.http.set-cookie;  
    } 
    // ... 
} 

現在這是什麼happenning(帶一個空瀏覽器緩存,圖片緩存):

  1. 請求來清漆,清漆去除餅乾。
  2. 清漆將請求傳遞給沒有cookie的後端。
  3. 後端全面填充請求並提供一個Set-Cookie頭端(因爲它沒有任何cookie)帶有新值
  4. 漆因爲它有一個Set-Cookie加載器(pastebin上的第102行),所以不能緩存對象。
  5. 清漆將圖像與新的cookie一起傳遞到您的瀏覽器。
  6. 您的瀏覽器覆蓋符合收到的Set-Cookie頭的PHPSESSID cookie。
+0

它的工作就像一個魅力!感謝您的解釋,我瞭解了我的PHPSESSID(Tx和Rx)之間的差異。非常感謝! – madoxav