Nginx本地缓存转发七牛云等OSS图片教程,可以省钱

教程介绍了如何在Nginx上配置缓存模块和反向代理,以实现七牛云/OSS储存图片的快速转发和缓存。通过这样的配置,可以通过自己网站流量走七牛云/OSS储存图片资源,能省钱服务器带宽快的还能提升用户的访问体验。

在我的服务器上,随着访问量增加,七牛云的钱也是大把大把的扣,刚好网站流量省得比较多,转发七牛云储存的图片不就可以了,我只获取一次后面的全部缓存到服务器上,后面访问的在服务器上获取就可以了。这样虽然可能会影响网站访问,但是能省钱。说干就干。

image-20230328180256172

配置nginx缓存

在Nginx配置文件中添加以下配置,启用缓存:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:1024m inactive=2d;
proxy_cache_key "schemerequest_methodhostrequest_uri";
proxy_cache_valid 200 60m;

以上代码中,/var/cache/nginx是缓存文件存放的路径,my_cache是缓存的名称,1024m 表示缓存最多1024m inactive=2d表示如果在2天时间内没有请求,缓存将被删除,proxy_cache_valid 200 60m其中,code是一个或多个 HTTP 状态码,表示只有返回指定状态码的响应才会被缓存;time则是缓存的有效期,可以是一个时间值,也可以是一个字符串。在proxy_cache_valid` 指令中,如果没有指定 HTTP 状态码,则缓存适用于所有状态码的响应。如果指定了状态码,则只有返回指定状态码的响应才会被缓存。

例如,proxy_cache_valid 200 60m 的意思是,缓存返回状态码为 200 的响应,有效期为 60 分钟。这意味着,如果 nginx 缓存中已经有了一个返回状态码为 200 的响应,并且这个响应的缓存时间还没有过期,那么下一次访问相同的 URL 时,nginx 会直接从缓存中返回这个响应,而不是向后端服务器请求数据。

需要注意的是,proxy_cache_valid 指令只对成功的响应(即状态码为 200~299)生效,对其他状态码的响应(如 404、500 等)不会生效。如果需要缓存其他状态码的响应,可以使用 proxy_cache_valid any 指令。

配置nginx反向代理

在Nginx配置文件中添加以下配置,启用反向代理:

location / {
    proxy_pass http://<your-domain>/;
    proxy_cache my_cache;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
}

其中,<your-domain>是你的待转发域名如(七牛云存储域名,OSS储存域名)。proxy_cache my_cache;启用缓存,proxy_cache_bypass $http_pragma;表示如果请求头中包含Pragma,则不使用缓存,proxy_cache_revalidate on;表示缓存过期时重新验证缓存。

测试

完成以上配置后,重启Nginx,并测试是否成功转发七牛云/OSS储存的图片并缓存到服务器上。在测试时,应该先访问一次该图片,以确保它被缓存到服务器上,然后再次访问该图片,以确保它是从服务器上获取的,而不是从七牛云/OSS储存上获取的。访问一次图片后,服务器就生成对应缓存文件了。

image-20230328175806338

通过以上步骤,你已经成功配置了Nginx缓存七牛云/OSS储存图片转发,快不快取决于服务器带宽,最主要是能省钱。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容