Параметр NGiNX Custom Cache на основе соответствия регулярному выражению

Мой вопрос (ы) заключаются в следующем:

  • Как мне установить пользовательские переменные на основе регулярного выражения для идентификатора пользователя?
  • Как установить пользовательские заголовки для запроса обратного прокси?
  • Как использовать эти значения в качестве параметров кэширования?

Подробности:

Я делаю первоначальный вывод в моем приложении на основе парсинга пользовательского агента... который в основном разбивает рендеринг запросов, поэтому начальный рендеринг будет соответствовать размерам начальной загрузки "xs","sm","md","lg" ...

Я разработал свои регулярные выражения так, что мобильные устройства будут получать выходные данные для "xs", а обычные планшеты будут получать "sm" по умолчанию, любой другой получит "md"... после привязки на стороне клиента он настроится на фактическое отображение устройства, это в основном так, чтобы браузеры получали нужный им размер.

То, что я хочу быть в состоянии сделать это:

  • на основе сопоставления с шаблоном пользовательского агента задайте несколько параметров, которые будут переданы через (обратный прокси) моему приложению
    • X-Initial-Size - "xs", "sm", "md", "lg" (реально ничто не разрешит "lg"
    • X-Is-Human - сопоставить с известными ботами для обнаружения
    • X-Browser-Class - "древний", "современный", "то есть #" (только IE <= 9)
  • использование X-Initial-Size а также X-Browser-Class как vary-by параметры для более продолжительного кэширования вывода на стороне сервера.

1 ответ

Решение

Я могу установить пользовательские переменные на основе регулярных выражений против useragent?

Используйте карту. Например:

map $http_user_agent $my_var {
    default     "default_value";
    "~^foo$"    "value_1";
    "~^bar$"    "value_2";
}

Установить пользовательские заголовки для запроса обратного прокси?

Используйте proxy_set_header. Например:

proxy_set_header My-Header $my_var;

Использовать эти значения в качестве параметров кэширования?

Определите эти дополнительные заголовки как часть вашего ключа кэша прокси:

proxy_cache_key $scheme$request_uri-$http_my_header-$http_my_other_header
Другие вопросы по тегам