nginx + caching of static files

Igor Sysoev is at rambler-co.ru
Tue Apr 7 12:01:22 MSD 2009


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/





More information about the nginx mailing list