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;