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)