Nginx Кеширование

Подключение

В секции локации прописать include cache; Затем создать подключение

/etc/nginx/conf.d/cache.conf

#fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=nginxcache:10m inactive=5m max_size=500m;
fastcgi_cache_path /var/cache/nginx levels= keys_zone=nginxcache:1024m max_size=20480m inactive=7d;
#fastcgi_cache_path /var/cache/nginx levels= keys_zone=nginxcache:50m;
#perl_set $rand 'sub { return int rand 10 }';

levels - уровень создания папок

keys_zone

inactive

Настройка

/etc/nginx/cache

# Необходимо для передачи cookie в соответствующие переменные,
# например cookie с именем phpsessid будет находится в переменной $cookie_phpsessid
# fastcgi_pass_header Cookie;
fastcgi_pass_header "Set-Cookie";
#fastcgi_cache_methods GET HEAD;
# Не берется из кеша
fastcgi_cache_bypass $no_cache;
# Не сохраняется в кеш
fastcgi_no_cache $cookie_nocache $no_cache;
#add_header X-Micro-Cache $upstream_cache_status;
#expires epoch;
fastcgi_cache nginxcache;
fastcgi_cache_valid 200 301 302 304 1m;
# Таким образом можно закешировать любые ответы
#fastcgi_cache_valid any 10s;
# Задаем ключ кеша
# Доступные переменные:
# $server_addr
# $server_port
# $request_method
# $http_if_modified_since
# $http_if_none_match
# $host
# $request_uri
# $cookie_phpsessid $cookie_
# $http_cookie
# $session_id
fastcgi_cache_key "$server_addr : $server_port / $request_uri $http_cookie $request_method $session_id";
# Гарантируем, что разные пользователи не получат одну и ту же сессионную Cookie.
fastcgi_hide_header "Set-Cookie";
# Заставляем nginx кэшировать страницу в любом случае, независимо от
# заголовков кэширования, выставляемых в PHP.
#fastcgi_ignore_headers "Cache-Control" "Expires";
fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
# Заставляем браузер каждый раз перезагружать страницу (для ротации).
fastcgi_hide_header "Cache-Control";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
fastcgi_hide_header "Pragma";
add_header Pragma "no-cache";
# Выдаем всегда свежий Last-Modified.
expires -1; # Внимание!!! Эта строка expires необходима!
add_header Last-Modified $sent_http_Expires;
# Используем вариант из кеша (даже если он устарел) в случае ошибки
fastcgi_cache_use_stale updating error timeout invalid_header http_500;