Use nginx as proxy with cache for satic files

Igor Sysoev is at rambler-co.ru
Sat Sep 5 16:08:23 MSD 2009


On Sat, Sep 05, 2009 at 12:00:39PM +0200, ice-egal at web.de wrote:

> >Hi,
> >
> >Settings in your / location will not be inherited by those in other
> >locations.  The proxy_pass directive can only go in location or
> >location-if (i.e. an if (...) {...} inside a location), and can't go at
> >the server level, so you'd have to define the proxy_pass setting in each
> >location it's used.
> >
> >http://wiki.nginx.org/NginxHttpProxyModule#proxy_pass
> 
> Okay, that's what I thought.
> 
> > > In other words: I want all requests going through the proxy, but keep
> > > a cache of ceartain folders on the nginx server. What is the best way
> > > to do so?
> > >
> >Probably by putting common settings (which might just be proxy_pass
> >http://backend.server.org;) in another file and including the file -
> >then you'd only have to change the address / port once.
> >
> >If you have multiple locations you want to cache, you could have three
> >files:
> >
> >proxy.conf : (with just the proxy info)
> >
> >proxy_pass  http://backend.server.org;
> >
> >proxy_cache.conf :  (with the proxy and the cache info)
> >
> >include  proxy.conf;
> >proxy_cache  cache;
> >proxy_cache_valid  200 10m;
> >
> >nginx.conf  :  (with the rest)
> >
> >...
> >location / {
> >  include    proxy.conf;
> >}
> >
> >location /images/ {
> >  include    proxy_cache.conf;
> >}
> >
> >location /other-cache/ {
> >    include   proxy_cache.conf;
> >}
> >...
> >
> >Hope that helps,
> >
> >Marcus.
> 
> Thank you very much, Marcus, I didn't think about "include" at all.
> Although this way still seems kind of intricate to me, it is probably 
> the easiest way to get what I want. I will try it like that and hope it 
> works.

Another way is to put common settings on server/http level (and to override
them in location's):

server {
    proxy_cache_valid  200 10m;
    ...

    location / {
        proxy_pass  http://backend.server.org;
    }

    location /images/ {
        proxy_pass  http://backend.server.org;
        proxy_cache  cache;
        proxy_cache_valid  200 6h;
    }

    location /other-cache/ {
        proxy_pass  http://backend.server.org;
        proxy_cache  cache;
    }


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list