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