Proxy cache


I am using nginx as a reverse proxy to cache content for an application.
Requests to the application are expensive, so I would like to set up
caching so that if the file exists in nginx, it won’t even bother
querying the backend server.

I can’t seem to figure out what I am missing.

This is how I am set up:

location /download {
index index.html index.htm;
proxy_pass http://x.x.x.x/download;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host;
proxy_set_header Accept-Encoding “”;
proxy_ignore_headers Set-Cookie X-Accel-Expires Expires Cache-Control;
if_modified_since off;
add_header X-Cache-Status $upstream_cache_status;

proxy_cache_valid 200 24h;
expires 168h;
proxy_cache staticfilecache;

proxy_cache_path /var/www/nginxcache/ levels=1:1:2
keys_zone=staticfilecache:2000m inactive=10800m;
proxy_cache_key “$scheme$host$request_uri$cookie_user”;

So for all requests to /download, I want it to serve strictly from the
cache. I do not want it to query the proxy_pass location at all (not
even for last modified time) if the file exists in the local cache. I
just want it to serve the cached copy and be done.

Is this possible?

Am completely sure its possible, am just not the nginx specialist, so i
might not point you to the best directions.

But as far as i understand in my little time together with things
thing called nginx, you should have a look on this:

let me know the results you achieve, since i’ll be soon passing by the
problem :stuck_out_tongue:

Is this possible?

yes. depending on your setup it could worth the
try to use nginx as static server for your download-files,
esp. if you run your proxy_pass - location on on the
same server. os-cache can be as fast as a ram-cache
via tmpfs.

depending on the amount of files in /download and filesize
it can be useful to tweak your setup (buffers, sendfile etc)

Posted at Nginx Forum: