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

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

nginx缓存文件原理

我的博客文章中的图片都是从后端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

可以看到响应头

image-20240106141232673

可以看到是七天的有效期,缓存已生效

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


#nginx