Nginx详解十六:Nginx场景实践篇之缓存服务

缓存类型:

服务端缓存

代理缓存

客户端缓存

Nginx代理缓存

配置语法

使用之前需要先定义一个proxy_cache_path
配置语法:proxy_cache_path path [levels=levels]
[use_temp_path=on|off] keys_zone=name:size [inactive=time]
[max_size=size] [manager_files=number] [manager_sleep=time]
[manager_threshold=time] [loader_files=number]
[loader_sleep=time] [loader_threshold=time] [purger=on|off]
[purger_files=number] [purger_sleep=time]
[purger_threshold=time];
默认状态:-;
配置方法:http

proxy_cache
配置语法:proxy_cache zone | off;
默认状态:proxy_cache off;
配置方法:http、server、location

缓存过期周期
配置语法:proxy_cache_valid [code...] time;
默认状态:-
配置方法:http、server、location

缓存的维度
配置语法:proxy_cache_key string;
默认状态:proxy_cache_key $scheme$proxy_host$request_url;
配置方法:http、server、location

确保后端正常:netstat -luntp|grep 800

 

去到Nginx缓存服务器

upstream imooc {
server 116.62.103.228:8001;
server 116.62.103.228:8002;
server 116.62.103.228:8003;
}
proxy_cache_path /opt/app/cache levels=1:2 keys_zone=imooc_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
listen 80;
server_name localhost jeson.t.imooc.io;

#charset koi8-r;
access_log /var/log/nginx/test_proxy.access.log main;

location / {
proxy_cache imooc_cache;
proxy_pass http://imooc;
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 10m;
proxy_cache_key $host$uri$is_args$args;
add_header Nginx-Cache "$upstream_cache_status";

proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
include proxy_params;
}

检查配置并重启

nginx -tc /etc/nginx/nginx.conf
nginx -s reload -c /etc/nginx/nginx.conf

这个时候去访问,就会在/opt/app/cache下生成缓存文件,并且访问的一直是这个页面

 

关闭缓存

检查并重启

清理指定的缓存

方式一:rm -rf 缓存目录内容

方式二:第三方扩展模块ngx_cache_purge

让部分页面不缓存

配置语法:proxy_no_cache string ...;
默认状态:-
配置方法:http、server、location

if ($request_uri ~ ^/(url3|login|register|password\/reset)){
set $cookie_nocahe 1;
}
location / {
proxy_cache imooc_cache;
proxy_pass http://imooc;
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 10m;
proxy_cache_key $host$uri$is_args$args;
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pargma $http__authorization;
add_header Nginx-Cache "$upstream_cache_status";
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
include proxy_params;
}

if ($request_uri ~ ^/(url3|login|register|password\/reset)){
set $cookie_nocahe 1;
}
location / {
proxy_cache imooc_cache;
proxy_pass http://imooc;
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 10m;
proxy_cache_key $host$uri$is_args$args;
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pargma $http__authorization;
add_header Nginx-Cache "$upstream_cache_status";
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
include proxy_params;
}

检查并重启

访问url1,会产生缓存,不管怎么刷新都访问这个

访问url3,则没有缓存,会进行页面更替(轮询)

猜你喜欢

转载自www.cnblogs.com/zhongyehai/p/10520437.html