кэширование только определенных типов

F0iL nginx-forum на nginx.us
Вт Июн 22 12:32:36 MSD 2010


Уважаемые, подскажите пожалуйста
решение следующего вопроса:
nginx - фронтенд, apache - бэкенд.
допустим, мне надо кэшировать только
некоторые типы файлов (графика и
статика), а остальное передавать
напрямую и без кэширования.
как реализовать?

очевидный на первый взгляд вариант:

location / {
proxy_pass ....
}

location ~* ^.+\.(ico|jpg|jpeg|gif|js|png|htm|html)$ {
include cache_on.inc;
proxy_pass ....
}

не прокатывает по причине того, что
proxy_pass не может быть под регулярным
выражением.

Была мысль при совпадении условия
(регулярного выражения) делать rewrite
куда-нибудь например на /ngncahce/....
а для него уже включать кэширование, но
там проблема в том, что движок успешно
переписывает выражение, повторяет
обработку снова, натыкается на свое же
условие (рег. выр.) и снова делает
реврайт, и так до бесконечности.
break ставить нельзя, т.к. тогда, само
собой, не сработает proxy_pass дальше.

была задумка сделать проверку на два
условия - на совпадение расширения
файла (рег. выражение) и на наличие ngncache
в урле (т.е. что его уже переписали), но
как я поял, скриптовый движок nginx не
умеет операцию AND для условий в if, то
есть сразу два условия поставить
нельзя.

Подскажите, как реализовать желаемое?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,101109,101109#msg-101109




Подробная информация о списке рассылки nginx-ru