Кэширование в nginx, ускоряем работу сайта

2015, 13 августа

Заходим в папку с настройками nginx

cd /etc/nginx

Открываем, через ваш любимый редактор файл настроек nginx.conf и добавляем код:

#Задаёт путь и другие параметры  кэша  
       proxy_cache_path /disk/cache  levels=1:2 keys_zone=cache:30m max_size=1G;  
# Задаёт имя каталога для хранения временных файлов с  данными, полученными от проксируемых серверов  
        proxy_temp_path /var/lib/nginx/proxy  1 2;  
# Запрещает обработку некоторых полей заголовка   
        proxy_ignore_headers Expires  Cache-Control;  
# Определяет, в каких случаях можно использовать устаревший  закэшированный ответ  
        proxy_cache_use_stale error timeout  invalid_header http_502;  
# Задаёт условия, при которых ответ не будет сохраняться в  кэш  
        proxy_no_cache $cookie_session;

Теперь в раздел настроек нашего сайта в блок location, который мы хотим кэшировать добавим код(в данном примере кешируем раздел сайта со статьями )

#кэшироваться будет  только  http://ваш сайт/articles/  
location ^~ /articles/  {
proxy_cache cache;  
      # Задаёт время кэширования   
      proxy_cache_valid 40m;  
      # Задаёт время кэширования для 404 кодов ответа  
      proxy_cache_valid 404 10m;  
      #-----------------------------------  
      #тут  ваши настройки location  
      #-----------------------------------  
}

Все теперь перезагружаем nginx

sudo /etc/init.d/nginx restart

Все теперь раздел /articles/ у нас кэширует запросы, а актуальность составляет 40 минут. Это значит, что после первого запроса к разделу сайта, он попадет в кэш и в течении 40 минут все последующие запросы будут выдаваться из кэша. Это позволит снизить нагрузку и увеличить скорость работы вашего сайта.