Я установил лак на свой сервер вместе с 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, чтобы игнорировать его на определенных страницах, чтобы увеличить коэффициент попадания в кеш.