Файловое кэширование ответов в 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 цифр
                                                                  
ad88888ba 888888888888 88 ad888888b, ad88888ba
d8" "88 ,8P' ,d88 d8" "88 d8" "8b
8P 88 d8" 888888 a8P Y8a a8P
Y8, ,d88 ,8P' 88 ,d8P" "Y8aaa8P"
"PPPPPP"88 d8" 88 a8P" ,d8"""8b,
8P ,8P' 88 a8P' d8" "8b
8b, a8P d8" 88 d8" Y8a a8P
`"Y8888P' 8P' 88 88888888888 "Y88888P"

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