本教程介绍了如何在Nginx上配置缓存模块和反向代理,以实现七牛云/OSS储存图片的快速转发和缓存。通过这样的配置,可以通过自己网站流量走七牛云/OSS储存图片资源,能省钱,服务器带宽快的还能提升用户的访问体验。
在我的服务器上,随着访问量增加,七牛云的钱也是大把大把的扣,刚好网站流量省得比较多,转发七牛云储存的图片不就可以了,我只获取一次后面的全部缓存到服务器上,后面访问的在服务器上获取就可以了。这样虽然可能会影响网站访问,但是能省钱。说干就干。
配置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储存上获取的。访问一次图片后,服务器就生成对应缓存文件了。
通过以上步骤,你已经成功配置了Nginx缓存七牛云/OSS储存图片转发,快不快取决于服务器带宽,最主要是能省钱。
暂无评论内容