On Tue, Jun 22, 2010 at 04:32:36AM -0400, F0iL wrote:
> Уважаемые, подскажите пожалуйста
> решение следующего вопроса:
> 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, то
> есть сразу два условия поставить
> нельзя.
>
> Подскажите, как реализовать желаемое?
location ~* ^.+\.(ico|jpg|jpeg|gif|js|png|htm|html)$ {
include cache_on.inc;
proxy_pass http://backend; # без "/"
}
--
Игорь Сысоев
http://sysoev.ru
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru