Файловое кэширование ответов в nginx

Исходная статья годовалой давности, но всё равно весьма полезный приём, например
если апач жрёт много ресурсов, не хватает памяти на сервере, тормозит база данных и т.д.
Просто положить готовые страницы в виде файлов и всё.
Притом даже если будет сбой бэкенда (ошибки HTTP 500, 502, 503, 504) - всё равно nginx сможет вернуть рабочую страницу.
---
23 марта вышел nginx 0.7.44, в нем наконец то появилось обещенное кеширование в модуле проксирования. Что нам это дает?
Как правило nginx используют для проксирования на всевозможные тяжеловесные веб сервера, которые долго и тяжело обрабатывают запросы. Не даром среди модулей nginx присутствует замечательно выполненный модуль upstream, который позволяет гибко балансировать нагрузку при проксировании. Теперь же, при наличии большого дискового кеша, nginx сможет сам обрабатывать такие запросы, не беспокоя при этом бекэнды.

После того как вы обновите или установите новый nginx, для того что бы включить кеширование, нужно будет внести такие настройки:

    #Настройка файлового кеша. Первая опция определяет, 
    # путь, levels - определяет уровень вложенности дисковой
    # иерархии кеша, keys_zone - определяет имя области
    # разделяемой памяти и размер, в разделяемой памяти, nginx 
    # будет хранить активный кеш и ключи доступа, в моем 
    # случае имя one, размер 20 мегабайт. Эта опция
    # определяется, только в секции http nginx, глобально 
    # для всех виртуальных серверов.  
    proxy_cache_path /var/db/nginx levels=1:2 keys_zone=one:20m;
    # Имя используемой зоны, для разных виртуалхостов можно 
    # указывать разные, заранее определенные в секции http. 
    # Эту и все последующие опции можно определять 
    # индивидуально для каждого виртуального сервера
    proxy_cache one;
    # После скольких запросов результат запроса попадет в кеш
    proxy_cache_min_uses 1;
    # Кешировать результат выполнения запроса с кодом 200, 301 и 302
    # на 30 минут
    proxy_cache_valid  200 301 302  30m;
    # 404 кешировать на 1 минуту
    proxy_cache_valid  404      1m;
    # При получении от бекэнда одного из перечисленных кодов
    # ответов разрешается использовать "несвежий"
    # кешированный результат выполнения запроса. 
    proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;

После того, как вы установите все опции, перезапустите nginx. Директории кеша создадутся сами и все замечательно заработает.
---

Источник


Оставить комментарий

Содержание этого поля является приватным и не предназначено к показу. Если есть аккаунт Gravatar, то отображается глобальный аватар.

Подробнее о форматировании

КАПЧА
А ты не робот? Введи 5 цифр
                                                                        
,d8 8888888888 8888888888 ad888888b, ad8888ba,
,d888 88 88 d8" "88 8P' "Y8
,d8" 88 88 ____ 88 ____ a8P d8
,d8" 88 88a8PPPP8b, 88a8PPPP8b, ,d8P" 88,dd888bb,
,d8" 88 PP" `8b PP" `8b a8P" 88P' `8b
8888888888888 d8 d8 a8P' 88 d8
88 Y8a a8P Y8a a8P d8" 88a a8P
88 "Y88888P" "Y88888P" 88888888888 "Y88888P"

Enter the code depicted in ASCII art style.
To prevent automated spam submissions leave this field empty.