nginx with proxy_cache_use_stale not returning from cache when connection refused

Ruslan Ermilov ru at nginx.com
Thu Dec 11 08:13:21 UTC 2014


On Wed, Dec 10, 2014 at 11:45:26AM -0500, new299 wrote:
> Hi,
> 
> I'm using nginx as a reverse proxy, but I can't get nginx to serve requests
> from its cache when the upstream server is refusing connections. I
> understood that "proxy_cache_use_stale error" should allow me to do this,
> but it doesn't seem to work for me. Have I perhaps misunderstood something?
> 
> My complete nginx.conf looks like this:
> 
> user www-data;
> worker_processes 4;
> pid /run/nginx.pid;
> 
> events {
>         worker_connections 768;
>         # multi_accept on;
> }
> 
> http {
>     upstream localsvr {
>             server localhost:8080;
>     }
> 
>     proxy_cache_path  /data/nginx/cache levels=1:2 keys_zone=one:8m
> max_size=5000m inactive=300m;
>     access_log /var/log/nginx/access.log;
>     error_log /var/log/nginx/error.log;
>     server {
>             keepalive_timeout 65;
>             types_hash_max_size 2048;
>             proxy_buffering on;
> 
>             default_type application/octet-stream;
> 
>             gzip on;
>             gzip_disable "msie6";
>             listen 80;
>             proxy_cache one;
>             proxy_cache_min_uses 100;
>             proxy_set_header Host $host;
>             location / {
>                     proxy_pass http://localsvr;
>                     proxy_cache_use_stale error;
>                     proxy_next_upstream error;
>                     proxy_redirect off;
>             }
>     }
> }

Your config doesn't have any http://nginx.org/r/proxy_cache_valid
directives.  If this is intentional, then your responses should
carry caching information themselves (X-Accel-Expires, Expires,
Cache-Control, Set-Cookie, Vary, see the link above for details)
and otherwise qualify to be cached.

Also, "proxy_cache_min_uses 100" in your config instructs to cache
a response only after it was requested 100 times.

Please first make sure your responses actually get cached by
looking into /data/nginx/cache.



More information about the nginx mailing list