nginx + caching of static files

Payam Chychi pchychi at gmail.com
Tue Apr 7 13:03:21 MSD 2009


2009/4/7 Igor Sysoev <is at rambler-co.ru>:
> On Tue, Apr 07, 2009 at 12:55:37AM -0700, Payam Chychi wrote:
>
>> On Mon, Apr 6, 2009 at 11:03 PM, Payam Chychi <pchychi at gmail.com> wrote:
>> > thank you sir =) you are a king!
>> >
>> > -Payam
>> >
>> > 2009/4/6 Igor Sysoev <is at rambler-co.ru>:
>> >> On Mon, Apr 06, 2009 at 10:46:24PM -0700, Payam Chychi wrote:
>> >>
>> >>> 2009/4/6 Igor Sysoev <is at rambler-co.ru>:
>> >>> > On Mon, Apr 06, 2009 at 10:14:36PM -0700, Payam Chychi wrote:
>> >>> >
>> >>> >> Hi Guys,
>> >>> >>
>> >>> >> I was hoping someone could point out a document where it can teach me
>> >>> >> how to setup nginx + caching. I know that traditionally nginx did not
>> >>> >> have a native caching and it required you to run ncache or cachemem in
>> >>> >> order to perform caching of static content... but does nginx now allow
>> >>> >> basic static file caching without the use of any other 3rd app?
>> >>> >>
>> >>> >> Im trying to understand if nginx now has a native caching which would
>> >>> >> allow caching of static content. I dont want to get fancy in anyway, I
>> >>> >> simply want to allocate say 200mb of storage space to allow caching of
>> >>> >> static content. the 200mb should be updated with the most
>> >>> >> active/recently seen file request.
>> >>> >>
>> >>> >> reason? im trying to allow nginx to serve the static files from disk
>> >>> >> (if it has seen it previously) and not have to go back to the origin
>> >>> >> server every single time.
>> >>> >
>> >>> > Get the lastest nginx (0.7.50) and use
>> >>> >
>> >>> >    proxy_cache_path  /path/to/cache  levels=1:2
>> >>> >                      keys_zone=one:10m
>> >>> >                      inactive=7d  max_size=200m;
>> >>> >
>> >>> >    proxy_temp_path   /path/to/temp;  # must be on the same filesystem
>> >>> >                                      # as cache
>> >>> >
>> >>> >    server {
>> >>> >
>> >>> >        location / {
>> >>> >            proxy_pass              http://backend;
>> >>> >
>> >>> >            proxy_cache             one;
>> >>> >            proxy_cache_key         backend$request_uri;
>> >>> >            proxy_cache_valid       200  1h;
>> >>> >            proxy_cache_use_stale   error timeout invalid_header;
>> >>> >        }
>> >>> >
>> >>> >
>> >>> >
>> >>> > --
>> >>> > Igor Sysoev
>> >>> > http://sysoev.ru/en/
>> >>> >
>> >>> >
>> >>>  proxy_cache_path  /path/to/cache  levels=1:2
>> >>>                      keys_zone=one:10m
>> >>>                      inactive=7d  max_size=200m;
>> >>>
>> >>>    proxy_temp_path   /path/to/temp;  # must be on the same filesystem
>> >>>                                      # as cache
>> >>>
>> >>>    server {
>> >>>
>> >>>        location / {
>> >>>            proxy_pass              http://backend;
>> >>>
>> >>>            proxy_cache             one;
>> >>>            proxy_cache_key         backend$request_uri;
>> >>>            proxy_cache_valid       200  1h;
>> >>>            proxy_cache_use_stale   error timeout invalid_header;
>> >>>        }
>> >>>
>> >>>
>> >>>
>> >>> few questions:
>> >>> 1- what does the keys_zone used for
>> >>> 2- what does the "200 1h" in proxy_cache_valid mean
>> >>> 3- how is the "proxy_cache_use_stale  error timeout invalid_header" used?
>> >>
>> >> http://wiki.nginx.org/NginxHttpProxyModule#proxy_cache
>> >>
>> >>
>> >> --
>> >> Igor Sysoev
>> >> http://sysoev.ru/en/
>> >>
>> >>
>> >
>> >
>> >
>> > --
>> > Payam Tarverdyan Chychi
>> > Network Security Specialist / Network Engineer
>> >
>>
>>
>> Igor,
>>
>> using the caching info  ... i get a "redirect loop" when trying to
>> download  domain.com/images/spacer.gif  when the file does not exist
>> on the origin server ... ive also been able replicate this with YSlow
>> for firefox
>>
>> When bypassing the proxy/cache and connecting directly to the origin,
>> i get the proper 404 error
>> any ideas?
>
> Probably you have something like
>
>       error_page  404  /404.html;
>       proxy_intercept_errors  on;
>       recursive_error_pages   on;
>
> without
>
>       location = /404.html {
>
> so the /404.html is proxied to backend again.
>
> Also you may cache 404 errors too:
>
>       proxy_cache_valid    200 1h;
>       proxy_cache_valid    404 5m;
>
>
> --
> Igor Sysoev
> http://sysoev.ru/en/
>
>

Right on... that was the problem. fixed with adding exactly what you
said... im now also caching 404

thanks again
-payam





More information about the nginx mailing list