Параметр 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