我的博客文章中的图片都是从后端oss服务器取的,由于经过了内网穿透,所以每一次请求都要经过我的跳板机服务器做一次反向代理(具体见 关于我的博客网络架构的总结 ),经过两次网络开销,效率肯定比较低,所以我想,反正这些图片一般也不会更改,通过nginx的时候缓存一下图片,既能加快响应速度,也能减轻服务端压力,岂不美哉,具体配置很简单,在Nginx中配置如下规则
#设置缓存的路径和其他参数。被缓存的数据如果在inactive参数(当前为3天)指定的时间内未被访问,就会被从缓存中移除
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=imgcache:100m inactive=3d max_size=10g;
server {
listen 80;
server_name blog.kdyzm.cn www.kdyzm.cn;
location /storage{
log_not_found off;
access_log off;
#缓存时间为7天
expires 7d;
#指定用于页面缓存的存储空间,对应http层设置的keys_zone
proxy_cache imgcache;
#为200的状态码设置3天的缓存时间
proxy_cache_valid 200 302 3d;
proxy_cache_valid 404 10m;
proxy_cache_valid any 1h;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
#nginx缓存里拿不到资源,向该地址转发请求,拿到新的资源,并进行缓存
proxy_pass http://mydomain:myport;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
client_max_body_size 2m;
add_header notice "hey ! guys ! give me a star !!";
}
}
验证缓存生效验证:访问下链接 https://blog.kdyzm.cn/storage/thumbnails/_signature/249CRP9PIQENLAPJ003S93NOHT.jpg
可以看到响应头
可以看到是七天的有效期,缓存已生效
参考文档:使用Nginx缓存服务器上的静态文件
注意:本文归作者所有,未经作者允许,不得转载