2012-06-06 64 views
1

我們最近已將光油放在我們的Drupal前面,因爲服務器承受着沉重的負擔,我們對整體感到非常滿意。無限重定向循環在清漆緩存中

剩下的唯一問題是我們有時在緩存的數據中有無限的重定向循環。我們通過HTTP監控發現了這一點。我們每分鐘檢查一次首頁。緩存中的頁面有時包含完整的首頁,但帶有一個位置標題集,它將用戶重新發送到首頁。

我們不太確定可能會導致這種情況,但也不知道如何跟蹤這種情況。當然,處理這個問題的最好方法是在drupal端,但我們無法真正知道爲什麼會發生這種情況。

發生這種情況時是否有方法記錄案例?或者是否有可能在清漆中檢測到這種情況,並將當前緩存內容標記爲無效?

當然,我們不希望總是將故意重定向傳遞到原始服務器,但是會導致無限循環。

我希望聽到一些想法,我們可以進一步追蹤這一點。許多人提前感謝各種提示。

回答

2

我已經找到了解決方法是:

sub vcl_fetch { 
    // Fix a strange problem: HTTP 301 redirects to the same page sometimes go in$ 
    if (beresp.http.Location == "http://" + req.http.host + req.url) { 
    if (req.restarts > 2) { 
     unset beresp.http.Location; 
     #set beresp.http.X-Restarts = req.restarts; 
    } else { 
     return (restart); 
    } 
    } 
} 

我給後端第二(和thirhd)機會回到正確的頁面。如果失敗,位置標題將被刪除。這是有效的,因爲只有一個額外的無效的位置標題纔會提供正確的頁面。

+0

需要更改哪些文件?爲了澄清。謝謝,並且從長遠來看這是如何工作的? – pal4life

+0

beresp?這是什麼意思 – pal4life

+0

beresp是後端響應。您需要將其添加到vcl文件的某個位置(即default.vcl)。由於這是一個非常基本的問題,因此在使用Varnish之前,應該確保閱讀一些關於Varnish的文檔,因爲它是一個很好的工具,但是可以很複雜地正確設置 – philip