NGINX кеш на основе куки

Есть ли способ для NGINX иметь другой кеш в зависимости от значения куки?

В моем случае у меня есть веб-сайт (в моем случае плагин), который создает cookie-файл с именем devicePixelRatio. В большинстве случаев это 1, но если у вас дисплей с высоким разрешением, он будет равен 2 (или больше). Обычно серверная сторона генерирует веб-сайт по-разному в зависимости от значения этого файла cookie (либо 1, либо что-то еще). В основном мне понадобятся два кэша, один для devicePixelRatio=1 и один для любого другого значения devicePixelRatio.

Это возможно?

Большое спасибо.

1 ответ

Да, это возможно.

https://stackoverflow.com/questions/26128412/how-to-extract-some-value-from-cookie-in-nginx

http://nginx.org/en/docs/http/ngx_http_core_module.html

Используйте заголовки клиентских запросов для оценки содержимого файлов cookie. Создайте свою логику доступа к кешу вокруг этого.

Дополнительная информация: https://serversforhackers.com/nginx-caching/

Вот отправная точка:

http://syshero.org/post/50053543196/disable-nginx-cache-based-on-cookies

Например, вы могли бы поместить proxy_cache_path в оператор if, оценивающий содержимое cookie. Псевдокод:

if $cookie_devicePixelRatio = 2
proxy_cache_path = /retina/;
(or fastcgi_cache_path)
else
proxy_cache_path = /sd/;
(or fastcgi_cache_path) 
Другие вопросы по тегам