Отключить кэширвоание FastCGI для определенного location

Igor Sysoev is at rambler-co.ru
Sat Sep 5 15:11:40 MSD 2009


On Sat, Sep 05, 2009 at 02:38:23PM +0400, Sergey V. Sokolov wrote:

> On Суббота 05 сентября 2009 00:45:46 Dmitry wrote:
> > Грубо так:
> >
> > location /ajax/(.*\.php)$ {
> > .... fastcgi_cache off;
> > 	fastcgi_pass ...
> > ......
> > }
> 
> Т.е. получается для каждого location нужно прописать все те же настройки 
> FastCGI, но отключить кэш. Большое дублирование получается, а если локейшенов 
> для которых нужно отключить не один :(

Да. Есть два подхода к конфигурации location'ов:

1) Выбирается самый подходящий location и используется его конфигурация.
   При этом наследуется конфигурация предыдущих уровней (server и http).
   Удобно, особенно, если используются только статические location'ы,
   для конфигураций с сотнями location'ов.

2) Проходим через все совпавшие location'ы и по пути собираем все настройки.
   Удобно для простых конфигураций с парой location'ов (типа hello world!).
   При увеличении числа location'ов боьше десятка добавление нового
   location'а превращается в АДЪ.

В nginx'е используется первый подход, потому что в своё время я на Апаче
вдоволь наконфигурился по второму методу (там этот бардак обеспечивается
наличием Directory, DirectoryMatch, Files/FilesMatch, Location/LocationMatch,
причём сначала на уровне глобального сервера, а потом ещё и виртуального, ну
и для полноты ощущений - раскиданный по каталогам всеми любимый .htaccess).

> Или я ошибаюсь и все остальные настройки FastCGI будут применены из
> location ~ \.php$
> ???

Нет. Общие настройки можно описать на уровне server. Или http.

> > С Уважением,
> > Дмитрий.
> >
> > 04.09.2009 23:28, Sergey V. Sokolov пишет:
> > > Как реализовать сабж?
> > >
> > > Есть вот такой кусок конфига:
> > >
> > > location ~ \.php$ {
> > >          fastcgi_param   DOCUMENT_ROOT      /www/zavolga;
> > >          fastcgi_param   SCRIPT_FILENAME   
> > > /www/zavolga$fastcgi_script_name; fastcgi_ignore_headers  Cache-Control
> > > Expires;
> > >          fastcgi_pass            unix:/var/tmp/php-fpm-zavolga.sock;
> > >          fastcgi_cache          zavolga;
> > >          fastcgi_cache_key     
> > > unix:/var/tmp/php-fpm-zavolga.sock/$host$request_uri; fastcgi_cache_valid
> > >    6h;
> > >          fastcgi_cache_valid    any 5m;
> > >
> > >          fastcgi_index           index.php;
> > >          include                 fastcgi_params_chrooted;
> > > }
> > >
> > > Как отключить кэширование для некоторых location.
> > >
> > > Например это не помогло.
> > > location /ajax {
> > > 	fastcgi_cache off;
> > > }


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list