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