Different cache time for different locations

Nuno Neves nfnlists at gmail.com
Thu Sep 20 21:29:53 UTC 2012


Hello

2012/8/31 Maxim Dounin <mdounin at mdounin.ru>:
> Hello!
>
> On Fri, Aug 31, 2012 at 05:46:02PM +0100, Nuno Neves wrote:
>
>> Hello,
>>
>> All my requests passes in the php location to fastcgi ( location ~
>> \.php$ ) and I would like to have different cache time for different
>> requests.
>>
>> As an example :
>>
>> / -> cache time for 10 minutes
>> /about -> cache time for 1 day
>> /products -> cache time for 1h
>>
>> Right now I have the same cache for all requests: fastcgi_cache_valid
>> 200 302  10m;
>>
>> How am I able to accomplish this setup?
>
> Configure different locations to handle different requests, for
> example
>
>    location = / {
>        fastcgi_pass ...
>        fastcgi_cache_valid 10m;
>        ...
>    }
>
>    location = /about {
>        fastcgi_pass ...
>        fastcgi_cache_valid 1d;
>        ...
>    }
>
>    location = /products {
>        fastcgi_pass ...
>        fastcgi_cache_valid 1h;
>        ...
>    }
>
> Maxim Dounin

I've tested this configuration, but since all php requests pass in (
location ~ \.php$ ) and all requests are sent to /index.php with
try_files, this doesn't work.

For example, all requests to /products are handle with /index.php with try_files

location / {
  try_files $uri $uri/ /index.php;
}

location ~ \.php$ {
  fastcgi_pass ...
  fastcgi_cache one;
  fastcgi_cache_valid 200 20m;
  ....
}

If I add:

location = /products {
  fastcgi_pass ...
  fastcgi_cache_valid 1h;
   ...
}

A request to /products get the value from .php location (
fastcgi_cache_valid 200 10m; )
If I remove  fastcgi_cache_valid from .php location, all requests I
get are MISS.

Any ideas to accomplished this?

Thanks



More information about the nginx mailing list