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

Заставить nginx избегать кеширования, если ответ содержит Vary Accept-Language

Модуль кеширования nginx версии 1.1.19 не принимает Vary заголовок во внимание. Это означает, что nginx будет обслуживать тот же запрос, даже если содержимое одного из полей, указанных в Vary заголовок изменился.

В моем случае меня волнует только Accept-Language header, обо всех остальных позаботились.

Как я могу заставить nginx кешировать все Кроме ответы, которые имеют Vary заголовок, содержащий Accept-Language?

Полагаю, мне нужно что-то вроде

location / {
    proxy_cache cache;
    proxy_cache_valid 10m;
    proxy_cache_valid 404 1m;

    if ($some_header ~ "Accept-Language") { # WHAT IS THE HEADER TO USE?
         set $contains_accept_language # HOW SHOULD THIS VARIABLE BE SET?
    }

    proxy_no_cache $contains_accept_language

    proxy_http_version 1.1;
    proxy_pass http://localhost:8001;
}

но я не знаю, как называется переменная для " Vary заголовок, полученный от бэкэнда ".

Поскольку соответствующие проездной билет есть, у вас есть несколько вариантов:

  1. Добавьте $ http_accept_language в ключ кеша.
  2. proxy_no_cache $ upstream_http_vary;