使用nginx缓存服务器上的文件

Published on 2024-01-06 14:14 in 分类: 随笔 with 狂盗一枝梅
分类: 随笔

nginx缓存文件原理

我的博客文章中的图片都是从后端oss服务器取的,由于经过了内网穿透,所以每一次请求都要经过我的跳板机服务器做一次反向代理(具体见 关于我的博客网络架构的总结 ),经过两次网络开销,效率肯定比较低,所以我想,反正这些图片一般也不会更改,通过nginx的时候缓存一下图片,既能加快响应速度,也能减轻服务端压力,岂不美哉,具体配置很简单,在Nginx中配置如下规则

#/var/cache/nginx/cache:指定缓存文件存放的本地路径46。
#levels=1:2:表示使用两级子目录结构(第一级1个字符命名,第二级2个字符命名),提升文件系统检索效率48。
#keys_zone=imgcache:100m:定义名为imgcache的共享内存区,用于存储缓存键和元数据,100MB空间可存储约80万个键46。
#inactive=3d:未被访问的缓存文件3天后自动删除,无论是否过期46。
#max_size=10g:磁盘空间限制缓存总大小上限为10GB,超出后按LRU(最近最少使用)策略清理
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天的缓存时间,3天内请求则直接返回服务器缓存数据;超过三天不访问,则会被删除(inactive=3d作用)
        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

可以看到响应头

image-20240106141232673

可以看到服务器已经告诉浏览器要要浏览器缓存到本地七天,缓存已生效

参考文档:使用Nginx缓存服务器上的静态文件


#nginx
复制 复制成功