Nginx服务器上搭建图片缓存服务的基本配置解析

网站技巧 服务器 nginx 分类:[default] 更新日期: 2015-10-02
这篇文章主要介绍了Nginx服务器上搭建图片缓存服务的基本配置解析,分别介绍了通过proxy_store模块和proxy_cache模块两种方式的配置,需要的朋友可以参考下

最近准备用nginx搭建了一个图片服务器,看中的就是nginx超强的静态文件处理能力。

由于图片量比较大,和web服务器(也是nginx)分开运行,虽然web服务器调用图片没用问题,但毕竟是远程调用,肯定没有本地文件系统那么快,因此仍然有优化的空间。

proxy_store
使用前的nginx配置

location ~* ^.+\.(js|ico|gif|jpg|jpeg|png|html|htm)$ {
  log_not_found off;
  access_log off;
  expires 7d;
}

接下来就用到了nginx的proxy_store模块,让nginx 将取得的图片缓存在本地一个目录,下次就直接调用,(这让网页热点图片统计变得非常容易,讨厌日志分析的管理员肯定喜欢)

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {
      log_not_found off;
      expires 7d ;
      access_log off;
      proxy_store on;
      proxy_store_access user:rw group:rw all:rw;
      if ( !-e $request_filename) {
      proxy_pass http://img.example.com
      }
}

默认的缓存路径位于 /var/cache/nginx/proxy_temp,里面将会保持图片服务器的目录结构

proxy_store 没有缓存过期,相当于镜像功能,这既是优点也是缺点,优点是访问快速,缺点是不知哪一天,硬盘会被撑爆,不过我们可以写个find脚本,定时清理一下缓存就OK了。

nginx还有一种缓存proxy_cache,它在设计上比proxy_store 更先进,采用内存+硬盘方式缓存,可以设置缓存大小和缓存过期。

proxy_cache
proxy_cache有一个问题就是,proxy_cache不能清除指定的URL缓存,只能设置URL过期时间,但是有问题,有人就会很快解决问题,nginx第三方模块ngx_cache_purge能清除指定URL。
 
  nginx安装时需要将ngx_cache_purege加载进去。

./configure --user=www --group=www --add-module=/root/dxm/nginx/ngx_cache_purge-1.2  

 
其中,/root/dxm/nginx/ngx_cache_purge-1.2为ngx_cache_purge解压路径(附件中提供ngx_cache_purge tar包下载)
 
现在来一段实例,实现图片缓存:
   话说proxy_tem_path,与proxy_cache_path必须在同一个分区之下!
 

proxy_temp_path /usr/local/nginx/proxy_temp; 
proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g; 

upstream tomcat_server{ 
  server 127.0.0.1:8080;  
  } 
   
   
  server{ 
  listen 192.168.154.128; 
  server_name www.wolf.com; 
   
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 
  { 
       
      proxy_cache cache_one; 
      proxy_cache_methods GET HEAD POST; 
        proxy_cache_min_uses 1; 
       proxy_cache_valid 200 302 10m; 
       proxy_cache_valid 404 1m; 
      proxy_cache_valid any 1m; 
       proxy_cache_key "$host:$server_port$uri$is_args$args"; 
 
     proxy_redirect off; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_pass http://tomcat_server; 
      
 
  } 
   
 
  location ~ .*\.(jsp)$ { 
       
     proxy_redirect off; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_pass http://tomcat_server; 
 
  } 
   
 
  location ~ /purge(/.*) 
  { 
    allow 192.168.154.128; 
    allow 192.168.154.1; 
      deny all; 
      proxy_cache_purge cache_one $host:$server_port$1$is_args$args; 
    }  

 
恩,静态页面缓存,动态请求不缓存!
 
大家看一下最后一段的那个purege配置,很显然,表示哪些IP可以手动清除指定的URL
 
比如,www.jb51.net/1.jpg可以访问到我的图片,那么用www.wolfdream.cn/purge/1.jpg  就可以清除图片缓存了。


> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • asp.netcore实现文件上传功能
    asp.netcore实现文件上传功能
    这篇文章主要为大家详细介绍了asp.net core实现文件上传功能,怎么做单文件和多文件上传,感兴趣的小伙伴们可以参考一下本文实例为大家分享了单文件上传.多文件上传的功能,供大家参考,具体内容如下 单文件上传 上传文件在Web应用程序中是一个常见的功能.在asp.net core中上传文件并保存在服务器上,是很容易的.下面就来演示一下怎么样在 ASP.NE ...
  • 解读ASP.NET5&MVC6系列教程1:ASP.NET5简介
    这篇文章主要介绍ASP.NET 5简介以及对各个版本号进行解释,ASP.NET 5中新的变化,需要的朋友可以参考下.ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东西. 在.NET C ...
  • 探讨Ajax中有关readyState状态值和status状态码)的问题
    这篇文章主要介绍了探讨Ajax中有关readyState状态值和status状态码的问题的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下先看下面一段代码,然后给大家详细介绍,Ajax中有关readyState(状态值)和status(状态码)的问题,具体内容如下所示: var getXmlHttpRequest = function () { t ...
  • MongoDB的Master-Slave主从模式配置及主从复制要点解析
    主从复制是数据库运维中一种常见的备份方式,这里我们来看一下MongoDB的Master-Slave主从模式配置及主从复制要点解析,需要的朋友可以参考下主从配置mongodb的master-slave模式配置方式如下1.keyFile生成key_file openssl rand -base64 741 > mongo_key 将mongo_key 分别 ...
  • Linux上安装Python的PIL和Pillow库处理图片的实例教程
    这里我们来看一下在Linux上安装Python的PIL和Pillow库处理图片的实例教程,包括一个使用Pillow库实现批量转换图片的例子:安装正常情况,只需 pip install PIL==1.1.7 或者 pip install Pillow==2.9.0 即可.但需留意安装后的输出安装完成后,需留意输出: *** TKINTER support no ...
  • 利用ASP.NETMVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)
    利用ASP.NETMVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)
    这篇文章主要介绍了利用ASP.NET MVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug四的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下我的个人博客站在使用百度富文本编辑器UEditor修改文章时,遇到了一些问题,(不知是bug,还是我没有配置好).但总算找到了解决方法,在此记录下来. 小站首页文章列表显示为(显示去除HTM ...
猜你喜欢