У меня есть сайт, обслуживаемый apache+tomcat, и кеш, обслуживаемый Varnish 4.1.
Когда апач не работает, лак всегда возвращает ошибку 503.
Я хотел бы, чтобы лак вернул копию страниц, которые он имеет в своем кеше, но мои попытки с ttl и грацией не увенчались успехом.
Я думаю, что прочитал всю документацию по лаку 4.1, которую смог найти, любая помощь очень ценится.
заранее спасибо
РЕДАКТИРОВАТЬ: лаклог -g запрос -q "ReqUrl eq '/'"
завиток
* << Запрос >> 1410492
- Начать запрос 1410491 rxreq
- Отметка времени начала: 1646995409.603391 0.000000 0.000000
- Требование метки времени: 1646995409.603391 0,000000 0,000000
- ReqStart 10.xxx.xxx.xxx 57472
- Требуемый метод ПОЛУЧИТЬ
- Требуемый URL /
- Требуемый протокол HTTP/1.1
- Хост ReqHeader: akamai5.rsi.ch
- Агент пользователя ReqHeader: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
- ReqHeader принимает: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
- ReqHeader accept-language: it,en-US;q=0.7,en;q=0.3
- ReqHeader принимает кодировку: gzip, deflate, br
- Файл cookie ReqHeader: wt_rla=292330999892453%2C2%2C1646731482026; _pipe_c=do_not_track; _ga=GA1.2.836346559.1644414441; __gads=ID=453223b8518b57e5-22f191e137cd00c3:T=1644414444:RT=1644414444:S=ALNI_MbCUi8liJ5sbhjlTe68z1BhLhZJCQ; __utma=46365988.836346559.1644414441.16
- Небезопасные запросы на обновление ReqHeader: 1
- ReqHeader sec-fetch-dest: документ
- ReqHeader sec-fetch-mode: навигация
- ReqHeader sec-fetch-site: нет
- ReqHeader sec-fetch-user: ?1
- Управление кешем ReqHeader: max-age=0
- ReqHeader x-forwarded-proto: https
- ReqHeader x-forwarded-ssl: вкл.
- ReqHeader x-forwarded-port: 443
- ReqHeader x-forwarded-for: 1178.xxx.xxx.xxx
- Соединение ReqHeader: закрыть
- ReqUnset x-forwarded-for: 1178.xxx.xxx.xxx
- ReqHeader X-Forwarded-For: 1178.xxx.xxx.xxx, 10.xxx.xxx.xxx
- VCL_вызов RECV
- ReqUnset cookie: wt_rla=292330999892453%2C2%2C1646731482026; _pipe_c=do_not_track; _ga=GA1.2.836346559.1644414441; __gads=ID=453223b8518b57e5-22f191e137cd00c3:T=1644414444:RT=1644414444:S=ALNI_MbCUi8liJ5sbhjlTe68z1BhLhZJCQ; __utma=46365988.836346559.1644414441.16
- Файл cookie ReqHeader: wt_rla=292330999892453%2C2%2C1646731482026; _pipe_c=do_not_track; _ga=GA1.2.836346559.1644414441; __gads=ID=453223b8518b57e5-22f191e137cd00c3:T=1644414444:RT=1644414444:S=ALNI_MbCUi8liJ5sbhjlTe68z1BhLhZJCQ; cs_fpid=1645804349272_22538249; wt_geid
- ReqUnset Cookie: wt_rla=292330999892453%2C2%2C1646731482026; _pipe_c=do_not_track; _ga=GA1.2.836346559.1644414441; __gads=ID=453223b8518b57e5-22f191e137cd00c3:T=1644414444:RT=1644414444:S=ALNI_MbCUi8liJ5sbhjlTe68z1BhLhZJCQ; cs_fpid=1645804349272_22538249; wt_geid
- Файл cookie ReqHeader: wt_rla=292330999892453%2C2%2C1646731482026; _pipe_c=do_not_track; _ga=GA1.2.836346559.1644414441; __gads=ID=453223b8518b57e5-22f191e137cd00c3:T=1644414444:RT=1644414444:S=ALNI_MbCUi8liJ5sbhjlTe68z1BhLhZJCQ; cs_fpid=1645804349272_22538249; wt_geid
- ReqUnset Cookie: wt_rla=292330999892453%2C2%2C1646731482026; _pipe_c=do_not_track; _ga=GA1.2.836346559.1644414441; __gads=ID=453223b8518b57e5-22f191e137cd00c3:T=1644414444:RT=1644414444:S=ALNI_MbCUi8liJ5sbhjlTe68z1BhLhZJCQ; cs_fpid=1645804349272_22538249; wt_geid
- Файл cookie ReqHeader: wt_rla=292330999892453%2C2%2C1646731482026; _pipe_c=do_not_track; _ga=GA1.2.836346559.1644414441; __gads=ID=453223b8518b57e5-22f191e137cd00c3:T=1644414444:RT=1644414444:S=ALNI_MbCUi8liJ5sbhjlTe68z1BhLhZJCQ; cs_fpid=1645804349272_22538249; wt_geid
- Хеш VCL_return
- ReqUnset принять кодировку: gzip, deflate, br
- ReqHeader Accept-Encoding: gzip
- ХЭШ VCL_вызова
- Поиск VCL_return
- Хит 1410469
- VCL_вызов HIT
- VCL_return доставить
- Респпротокол HTTP/1.1
- RespStatus 200
- RespReason OK
- RespHeader Дата: пятница, 11 марта 2022 г., 10:42:05 по Гринвичу
- Сервер RespHeader: Apache-Coyote/1.1
- Тип содержимого RespHeader: text/html; charset=UTF-8
- RespHeader Set-Cookie: JSESSIONID=F8D07853DF7D90A3F381B316F64FA285; Путь=/; HttpOnly
- RespHeader X-лак: 1410492 1410469
- RespHeader Возраст: 84
- RespHeader Через: 1.1 лак-v4
- VCL_вызов ДОСТАВИТЬ
- RespHeader X-Cache-Host: rsi-prod-varnish45
- RespHeader X-Frame-Options: SAMEORIGIN
- RespHeader X-XSS-Защита: 1; режим = блок
- RespHeader X-Content-Type-Options: nosniff
- RespHeader Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-eval' *
- RespHeader X-Cache: HIT
- RespHeader X-Cache-Хиты: 3
- RespHeader X-Grace-Hit: да
- VCL_return доставить
- Процесс отметки времени: 1646995409.603614 0.000222 0.000222
- RespHeader Accept-Range: байты
- Длина содержимого RespHeader: 191244
- Отладка "RES_MODE 2"
- Соединение RespHeader: закрыть
- Временная метка Ответ: 1646995409.608024 0.004632 0.004410
- ReqAcct 1130 0 1130 574 191244 191818
- Конец
браузер
* << Запрос >> 1410496
- Начало запроса 1410495 rxreq
- Отметка времени начала: 1646995426.730217 0,000000 0,000000
- Требование метки времени: 1646995426.730217 0,000000 0,000000
- ReqStart 10.xxx.xxx.xxx 60908
- ReqMethod ПОЛУЧИТЬ
- Требуемый URL /
- Требуемый протокол HTTP/1.1
- Хост ReqHeader: www.example.com
- Агент пользователя ReqHeader: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
- ReqHeader принимает: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
- ReqHeader accept-language: it,it-IT;q=0.8,en-US;q=0.5,en;q=0.3
- ReqHeader принимает кодировку: gzip, deflate, br
- Файл cookie ReqHeader: _pipe_c=do_not_track; _ga=GA1.2.1217589648.1620392041; __gads=ID=1a22b33c44d55e6f-1a22b33c44d55e6f:T=1620392042:RT=1620392042:S=ALNI_MYR9nyXrxcQ8QV1Y2pNVDp67Gn9-w; __utma=46365988.1217589648.1620392041.1638545296.1642173864.10; __utmz=46365988.16
- Небезопасные запросы на обновление ReqHeader: 1
- Управление кешем ReqHeader: max-age=0
- ReqHeader x-forwarded-proto: https
- ReqHeader x-forwarded-ssl: вкл.
- ReqHeader x-forwarded-port: 443
- ReqHeader x-forwarded-for: 178.xxx.xxx.xxx
- Соединение ReqHeader: закрыть
- ReqUnset x-forwarded-for: 178.xxx.xxx.xxx
- ReqHeader X-Forwarded-For: 178.xxx.xxx.xxx, 10.xxx.xxx.xxx
- VCL_вызов RECV
- ReqUnset cookie: _pipe_c=do_not_track; _ga=GA1.2.1217589648.1620392041; __gads=ID=1a22b33c44d55e6f-1a22b33c44d55e6f:T=1620392042:RT=1620392042:S=ALNI_MYR9nyXrxcQ8QV1Y2pNVDp67Gn9-w; __utma=46365988.1217589648.1620392041.1638545296.1642173864.10; __utmz=46365988.16
- Файл cookie ReqHeader: _pipe_c=do_not_track; _ga=GA1.2.1217589648.1620392041; __gads=ID=1a22b33c44d55e6f-1a22b33c44d55e6f:T=1620392042:RT=1620392042:S=ALNI_MYR9nyXrxcQ8QV1Y2pNVDp67Gn9-w; wt_rla=292330999892453%2C2%2C1646995242972; cs_fpid=1645855325408_55998969; JSESSI
- ReqUnset Cookie: _pipe_c=do_not_track; _ga=GA1.2.1217589648.1620392041; __gads=ID=1a22b33c44d55e6f-1a22b33c44d55e6f:T=1620392042:RT=1620392042:S=ALNI_MYR9nyXrxcQ8QV1Y2pNVDp67Gn9-w; wt_rla=292330999892453%2C2%2C1646995242972; cs_fpid=1645855325408_55998969; JSESSI
- Файл cookie ReqHeader: _pipe_c=do_not_track; _ga=GA1.2.1217589648.1620392041; __gads=ID=1a22b33c44d55e6f-1a22b33c44d55e6f:T=1620392042:RT=1620392042:S=ALNI_MYR9nyXrxcQ8QV1Y2pNVDp67Gn9-w; wt_rla=292330999892453%2C2%2C1646995242972; cs_fpid=1645855325408_55998969; JSESSI
- ReqUnset Cookie: _pipe_c=do_not_track; _ga=GA1.2.1217589648.1620392041; __gads=ID=1a22b33c44d55e6f-1a22b33c44d55e6f:T=1620392042:RT=1620392042:S=ALNI_MYR9nyXrxcQ8QV1Y2pNVDp67Gn9-w; wt_rla=292330999892453%2C2%2C1646995242972; cs_fpid=1645855325408_55998969; JSESSI
- Файл cookie ReqHeader: _pipe_c=do_not_track; _ga=GA1.2.1217589648.1620392041; __gads=ID=1a22b33c44d55e6f-1a22b33c44d55e6f:T=1620392042:RT=1620392042:S=ALNI_MYR9nyXrxcQ8QV1Y2pNVDp67Gn9-w; wt_rla=292330999892453%2C2%2C1646995242972; cs_fpid=1645855325408_55998969; JSESSI
- Хеш VCL_return
- ReqUnset принять кодировку: gzip, deflate, br
- ReqHeader Accept-Encoding: gzip
- ХЭШ VCL_вызова
- Поиск VCL_return
- VCL_вызов МИСС
- выборка VCL_return
- Ссылка bereq 1410497 fetch
- Извлечение метки времени: 1646995426.730455 0.000238 0.000238
- Респпротокол HTTP/1.1
- РеспСтатус 503
- Не удалось получить RespReason Backend.
- RespHeader Дата: пятница, 11 марта 2022 г., 10:43:46 по Гринвичу
- Сервер RespHeader: Лак
- Тип содержимого RespHeader: text/html; кодировка = utf-8
- RespHeader Retry-After: 5
- RespHeader X-лак: 1410496
- Возраст RespHeader: 0
- RespHeader Через: 1.1 лак-v4
- VCL_вызов ДОСТАВИТЬ
- RespHeader X-Cache-Host: rsi-prod-varnish45
- RespHeader X-Frame-Options: SAMEORIGIN
- RespHeader X-XSS-Защита: 1; режим = блок
- RespHeader X-Content-Type-Options: nosniff
- RespHeader Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-eval' *
- RespHeader X-Cache: HIT
- RespHeader X-Cache-Хитов: 0
- RespHeader X-Grace-Hit: да
- VCL_return доставить
- Процесс отметки времени: 1646995426.730495 0.000278 0.000040
- Длина содержимого RespHeader: 284
- Отладка "RES_MODE 2"
- Соединение RespHeader: закрыть
- Временная метка Ответ: 1646995426.730527 0.000310 0.000032
- ReqAcct 929 0 929 490 284 774
- Конец
** << БеРек >> 1410497
-- Начало bereq 1410496 fetch
-- Отметка времени начала: 1646995426.730367 0,000000 0,000000
-- BereqМетод ПОЛУЧИТЬ
-- BereqURL /
-- BereqПротокол HTTP/1.1
-- Хост BereqHeader: www.example.com
-- Агент пользователя BereqHeader: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
-- BereqHeader принимает: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
-- Язык приема BereqHeader: it,it-IT;q=0.8,en-US;q=0.5,en;q=0.3
-- BereqHeader update-insecure-requests: 1
-- BereqHeader x-forwarded-proto: https
-- BereqHeader x-forwarded-ssl: вкл.
-- BereqHeader x-forwarded-port: 443
-- BereqHeader X-Forwarded-For: 178.xxx.xxx.xxx, 10.xxx.xxx.xxx
-- Cookie BereqHeader: _pipe_c=do_not_track; _ga=GA1.2.1217589648.1620392041; __gads=ID=1a22b33c44d55e6f-1a22b33c44d55e6f:T=1620392042:RT=1620392042:S=ALNI_MYR9nyXrxcQ8QV1Y2pNVDp67Gn9-w; wt_rla=292330999892453%2C2%2C1646995242972; cs_fpid=1645855325408_55998969; JSESSI
-- BereqHeader Accept-Encoding: gzip
-- BereqHeader X-лак: 1410497
-- VCL_вызов BACKEND_FETCH
-- Извлечение бэкэнда VCL_Log: v_ssl_ece
-- VCL_return выборка
-- FetchError Director v_ssl_ece не вернул бэкэнд
-- FetchError Нет бэкенда
-- Временная метка Бересп: 1646995426.730387 0.000020 0.000020
-- Ошибка отметки времени: 1646995426.730390 0.000023 0.000003
-- БереспПротокол HTTP/1.1
-- BerespStatus 503
-- Служба BerespReason недоступна
-- Ошибка извлечения бэкэнда BerespReason
-- BerespHeader Дата: пятница, 11 марта 2022 г., 10:43:46 по Гринвичу
-- Сервер BerespHeader: Лак
-- VCL_вызов BACKEND_ERROR
-- BerespHeader Content-Type: text/html; кодировка = utf-8
-- BerespHeader Retry-After: 5
-- VCL_return доставить
-- Storage malloc Transient
-- Объектный протокол HTTP/1.1
-- Статус объекта 503
-- Ошибка извлечения бэкенда ObjReason
-- ObjHeader Дата: пятница, 11 марта 2022 г., 10:43:46 по Гринвичу
-- Сервер ObjHeader: Лак
-- Тип содержимого ObjHeader: text/html; кодировка = utf-8
-- ObjHeader Retry-After: 5
-- Длина 284
-- BereqAcct 0 0 0 0 0 0
-- Конец
РЕДАКТИРОВАТЬ 2: хеш и куки
После долгих исследований мы обнаружили, что проблема заключается в этой конфигурации:
суб vcl_hash {
hash_data(req.url);
если(треб.http.хост) {
hash_data(req.http.host);
} еще {
hash_data(сервер.ip);
}
# хеш-куки для объекта с авторизацией
если(треб.http.Cookie) {
hash_data(req.http.Cookie);
}
возврат(поиск);
}
Если файлы cookie удалены из хэша лака, он правильно возвращает кеш.
Полезно ли включать файлы cookie в хэш? На первый взгляд я так думаю, если куки используются для отслеживания аутентификации пользователя. Как мы можем включить в хеш только определенные файлы cookie (например, из аутентифицированного сеанса), а не те, которые бесполезны для кэширования (например, связанные с аналитикой)?