Use nginx as proxy with cache for satic files

Marcus Clyne maccaday at gmail.com
Sat Sep 5 01:45:26 MSD 2009


Hi,

>
> But now the image requests don't go through the proxy anymore, 
> resulting in a 404 error. Is there any way to inherit the proxy 
> settings from the parent folder/a certain location?
> Of course I could just add the proxy settings to the "location 
> /images/" block, but the images folder is not the only one I want to 
> be cached, so there has to be an easier way to do this.
>
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
> 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.






More information about the nginx mailing list