proxy_cache_valid缓存的相关问题请教
来源:3-12 Nginx作为代理服务_代理服务
imoocadf36567
2018-05-31
location / {
proxy_cache my_cache;
proxy_cache_revalidate on;
proxy_cache_min_uses 3;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_lock on;
proxy_pass http://my_upstream;
}
如果是动态文件,不加“proxy_cache_valid 200 304 1h;”内容。哪么页面不缓存,如果加了这个内容,如果动态文件更新了。用户看到还是旧信息,如何即时更新。又可以在服务器宕机的时候时候让用户看到缓存页面。
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
这句话的意思是,如果后端服务器返回错误或者5xx等错误,给用户返回之前的cache数据吧。动态页面如何做呢
1回答
-
Jeson
2018-05-31
是的,如果proxy_cache_use_stale设置了,那么当NGINX收到源站返回error、timeout或者其他指定的5XX错误,并且在其缓存中有请求文件的陈旧版本,则会将这些陈旧版本的文件而不是错误信息发送给客户端。
如果要将动态请求设置为不缓存,只缓存静态元素,可以作动静分离,将静态请求,单独设置缓存。如下:
location ~ .*\.(htm|html|js|css|gif|jpg|jpeg|png|bmp|ico|swf|flv)$ {
proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
proxy_cache cache_one;
proxy_cache_valid 200 304 12h;
proxy_cache_valid 301 302 10h;
proxy_cache_valid any 1m;
proxy_cache_key $host$uri$is_args$args;
add_header Ten-webcache '$upstream_cache_status from $host';
proxy_pass http://tomcat-game;
expires 30m;
}
location / {
proxy_pass http://my_upstream;
}032018-06-01
相似问题