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 и 302 # на 30 минут proxy_cache_valid 200 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. Директории кеша создадутся сами и все замечательно заработает.
By j0k3r, 26.03.2009 @ 14:59
Кажется, немного неверное описание:
# При получении от бекэнда перечисленных ответов,
# использовать результат из кеша
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
На сайте http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale наспиано: «Директива определяет, в каких случаях можно использовать несвежий закэшированный ответ, если при работе с проксированным сервером возникла ошибка.»
By hilik, 26.03.2009 @ 17:12
Я читаю, что на официально сайте написано, потом внедряю у себя, если работает — пишу статью. И формулирую тексты так, как они у меня в памяти отложились. Поэтому формулировка может «хромать».
By j0k3r, 26.03.2009 @ 17:18
Мне просто кажется, что «использовать результат из кеша» неверно отражает суть: «можно использовать _несвежий_ закэшированный ответ».
То есть, из кэша в любом случае (если включен кэш) берется результат, а данная директива указывает, в каких случаях можно использвать именно _просроченный_ кэш.
By hilik, 26.03.2009 @ 17:20
Да, вы абсолютно правы.