Есть ли способ для NGINX иметь другой кеш в зависимости от значения cookie?
В моем случае у меня есть веб-сайт (в моем случае плагин), который создает файл cookie с именем devicePixelRatio. В большинстве случаев это 1, но если у вас дисплей с высоким разрешением, то он будет равен 2 (или больше). В основном серверная сторона генерирует веб-сайт по-разному в зависимости от значения этого файла cookie (либо это 1, либо что-то еще). В основном мне понадобятся два кеша: один для devicePixelRatio = 1 и один для любого другого значения devicePixelRatio.
Это возможно?
Большое спасибо.
Да, это возможно.
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#variables
Используйте заголовки клиентских запросов для оценки содержимого файлов 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)