Назад | Перейти на главную страницу

Кэш Varnish включен, но возрастает возраст: 0 в заголовке

Я установил лак на свой сервер вместе с apache. Это сайт SSL. Поэтому я использую apache для завершения SSL с лаком. Проблема в том, что когда я использую команду curl -I, заголовки показывают, что возраст всегда больше 0. Тот же случай, когда я тестирую свой сайт с помощью https://isvarnishworking.uk Но когда я вижу заголовки из своего браузера, он всегда показывает возраст как 0. Я все перепробовал. Я даже пробовал это с сайтом только по http. По-прежнему в веб-браузере возраст отображается как 0

руководство, которое я использовал: https://bash-prompt.net/guides/apache-varnish/

Это заголовки

accept-ranges: bytes
access-control-allow-origin: *
age: 0
content-encoding: gzip
content-length: 7128
content-type: text/html; charset=UTF-8
date: Thu, 15 Aug 2019 05:37:53 GMT
last-modified: Thu, 15 Aug 2019 04:25:12 GMT
server: Apache/2.4.29 (Ubuntu)
status: 200
vary: X-Forwarded-Proto,Accept-Encoding
via: 1.1 varnish (Varnish/5.2)
x-varnish: 65690

EDIT: это заголовки, которые я получаю, когда использую curl -v 127.0.0.1:8080

Rebuilt URL to: 127.0.0.1:8080/
  Trying 127.0.0.1...
TCP_NODELAY set
Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
GET / HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: curl/7.58.0
Accept: */*
HTTP/1.1 200 OK
Date: Thu, 15 Aug 2019 09:58:23 GMT
Server: Apache/2.4.29 (Ubuntu)
Link: ; rel="https://api.w.org/", https://arcadesite.io/>; rel=shortlink
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
Content-Type: text/html; charset=UTF-8
X-Varnish: 491654 524537
Age: 62
Via: 1.1 varnish (Varnish/5.2)
Accept-Ranges: bytes
Content-Length: 28467
Connection: keep-alive

Почему вы не получаете одинаковых результатов в браузерах и curl в основном всегда один - куки.

Varnish принимает некоторые меры предосторожности и обходит кеширование при наличии файлов cookie (либо когда устанавливается серверной частью, или когда вы отправляете через браузер).

В вашем случае наиболее вероятно, что ваш браузер отправляет Cookie: в запросе (можно легко проверить в Chrome devtools, вкладка Network).

Чтобы Varnish делал свое дело, типичное решение - настроить его так, чтобы он удалял все файлы cookie, когда нет необходимых файлов cookie, например в vcl_recv:

if (req.http.cookie !~ "your-app-cookie-name") {
    unset req.http.cookie;
}

Это позаботится о прохождении файлов cookie только тогда, когда your-app-cookie-name является одним из отправляемых файлов cookie. В других случаях (например, пользователь не вошел в систему, файлы cookie, вероятно, необходимы сценариям отслеживания Javascript, поэтому не являются необходимыми ни для Varnish, ни для правильной работы серверной части).

Если ваше приложение отправляет «необходимый» файл cookie для каждой страницы (часто цитируйте), вам нужно будет либо настроить приложение (лучший маршрут, например, отправить PHPSESSID cookie только на странице входа) и / или настройте конфигурацию Varnish, чтобы игнорировать его на определенных страницах, чтобы увеличить коэффициент попадания в кеш.