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

 更新时间:2016年04月11日 09:18:24   作者:紫色葡萄  
这篇文章主要介绍了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  就可以清除图片缓存了。

相关文章

  • 你知道Nginx吗,利用Nginx反向代理的操作方法

    你知道Nginx吗,利用Nginx反向代理的操作方法

    Nginx是一个高性能的HTTP和反向代理服务器,可以用于反向代理,客户端只与Nginx交互,而不知道后端服务器的存在,以下是一个简单的Nginx反向代理配置示例,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • 使用Nginx搭建流媒体服务器实现直播功能

    使用Nginx搭建流媒体服务器实现直播功能

    这篇文章主要介绍了使用Nginx搭建流媒体服务器实现直播功能,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 详解Nginx轮询算法底层实现的方法

    详解Nginx轮询算法底层实现的方法

    这篇文章主要介绍了详解Nginx轮询算法底层实现的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Nginx配置常用参数梳理(看这一篇就够了)

    Nginx配置常用参数梳理(看这一篇就够了)

    这篇文章主要为大家介绍了Nginx配置常用参数梳理总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • nginx中keepalive配置详解

    nginx中keepalive配置详解

    keepalive是长连接的意思,本文主要介绍了nginx中keepalive配置详解,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • 详解Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    详解Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    本篇文章主要介绍了Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • 修改配置解决Nginx服务器中常见的上传与连接错误

    修改配置解决Nginx服务器中常见的上传与连接错误

    这篇文章主要介绍了修改配置解决Nginx服务器中常见的上传与连接错误的方法,分别针对Nginx的413错误与111错误,需要的朋友可以参考下
    2016-01-01
  • Nginx中if语句的判断条件与多条件判断详解

    Nginx中if语句的判断条件与多条件判断详解

    这篇文章主要介绍了关于Nginx中if语句的判断条件与多条件判断的相关资料,文中给出了详细的示例代码,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • 使用Nginx解决前端跨域问题

    使用Nginx解决前端跨域问题

    这篇文章主要为大家详细介绍了使用Nginx解决前端跨域问题的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • nginx 代理后出现503的解决方法

    nginx 代理后出现503的解决方法

    本文主要介绍了nginx 代理后出现503的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论