清漆記憶體已啟用,但仍會出現 age: 0 in header
我已經在我的伺服器上與 apache 一起安裝了清漆。它是一個 SSL 站點。所以我使用 apache 與清漆進行 SSL 終止。問題是當我使用 curl -I 命令時,標題顯示年齡總是大於 0。當我使用https://isvarnishworking.uk測試我的網站時也是如此但是,當我從瀏覽器中看到標題時,它總是顯示年齡為0。我已經嘗試了一切。我什至在一個僅限 http 的網站上嘗試過。還是在網路瀏覽器中,年齡顯示為0
我使用的指南:https ://bash-prompt.net/guides/apache-varnish/
這些是標題
接受範圍:字節 訪問控制允許來源:* 年齡:0 內容編碼:gzip 內容長度:7128 內容類型:文本/html;字元集=UTF-8 日期:2019 年 8 月 15 日星期四 05:37:53 GMT 最後修改時間:2019 年 8 月 15 日星期四 04:25:12 GMT 伺服器:Apache/2.4.29 (Ubuntu) 狀態:200 變化:X-Forwarded-Proto,Accept-Encoding 通過:1.1 清漆(清漆/5.2) x清漆:65690
編輯:這是我使用 curl -v 127.0.0.1:8080 時得到的標題
重建 URL 至:127.0.0.1:8080/ 正在嘗試 127.0.0.1... TCP_NODELAY 設置 連接到 127.0.0.1 (127.0.0.1) 埠 8080 (#0) 獲取/HTTP/1.1 主機:127.0.0.1:8080 使用者代理:curl/7.58.0 接受: */* HTTP/1.1 200 正常 日期:2019 年 8 月 15 日星期四 09:58:23 GMT 伺服器:Apache/2.4.29 (Ubuntu) 關聯: ; rel="https://api.w.org/", https://arcadesite.io/>; rel=短連結 變化:接受編碼 訪問控制允許來源:* 內容類型:文本/html;字元集=UTF-8 X-清漆:491654 524537 年齡:62 通過:1.1 清漆(清漆/5.2) 接受範圍:字節 內容長度:28467 連接:保持活動
為什麼您在瀏覽器中沒有得到相同的結果,而且
curl
通常只有一個 - cookie。Varnish 為您做了一些預防措施,並在存在 cookie 時繞過記憶體(由後端設置,或者當您通過瀏覽器發送時)。
在您的情況下,您的瀏覽器很可能發送了一個
Cookie:
請求(可以在 Chrome 開發工具的“網路”選項卡中輕鬆驗證)。為了讓 Varnish 完成它的工作,典型的解決方案是配置它以在沒有必要的 cookie 存在時剝離所有 cookie,例如
vcl_recv
:if (req.http.cookie !~ "your-app-cookie-name") { unset req.http.cookie; }
這將只
your-app-cookie-name
在 cookie 是發送的 cookie 之一時處理通過 cookie。對於其他情況(例如使用者未登錄,Javascript 跟踪腳本可能需要 cookie,因此對於 Varnish 和後端正常工作都不是必需的)。如果您的應用程序為每個頁面發送“必要”cookie(經常引用),您將需要調整您的應用程序(最佳路線,例如
PHPSESSID
僅在登錄頁面發送 cookie)和/或調整 Varnish 配置以在特定頁面上忽略它以增加記憶體命中率。