Мое приложение изменяет контент в зависимости от кода страны пользователя. Найдите диаграмму потока запросов к серверу.
запрос https -> nginx обрабатывает завершение ssl -> varnish -> если не кеширован, получить содержимое из apache
http rquest -> varnish -> перенаправить на ссылку https -> nginx обрабатывает завершение ssl -> varnish -> если не кэширован, получить содержимое из apache
Используя модуль varnish GeoIP, я нашел код страны пользователя и установил значение в заголовке req.http.X-Country-Code
Я прочитал это значение заголовка в приложении.
Проблема: Он всегда кэширует первое попадание и обслуживает все места
Я надеюсь, что добавление различных заголовков решит мою проблему. Не могли бы вы помочь мне?
Я не уверен, куда добавить различный заголовок nginx или apache.
Решение 1) https://varnish-cache.org/docs/5.1/users-guide/vcl-hashing.html
Решение 2) добавьте заголовок
Заголовок переменной должен быть сгенерирован источником, потому что только источник знает, какие страницы будут изменены.
https://varnish-cache.org/docs/5.1/users-guide/increasing-your-hitrate.html?highlight=vary#http-vary
если не получается добавить шапку в начале координат вы можете изменить vcl_backend_response добавить заголовок Vary
Некоторые документы:
https://varnish-cache.org/docs/5.1/reference/states.html#reference-states https://varnish-cache.org/docs/5.1/users-guide/vcl-built-in-subs.html