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

最近准备用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搭建web服务器、nginx搭建视频服务器、nginx svn服务器搭建,以便于您获取更多的相关知识。

时间: 2024-09-19 09:54:17

Nginx服务器上搭建图片缓存服务的基本配置解析_nginx的相关文章

Nginx服务器中浏览器本地缓存和虚拟机的相关设置_nginx

自动列出目录配置: 下载过开源软件的都知道,一个很简单的页面列出了所有版本的源码包,这就是开启了自动列出目录 如下配置,在虚拟主机location / {--}目录控制中配置自动列出目录:   location / { autoindex on; } 浏览器本地缓存设置: 浏览器是为了加速浏览,浏览器在用户磁盘上对最近请求过的文件进行存储,当访问者再次请求这个页面, 浏览器可以从本地磁盘显示文件,以达到加速浏览的效果,节约了网络资源,提高了网络效率 关键字: expires 默认值: off 作

CI在Nginx服务器上rewrite去掉index.php例子

CI框架在nginx服务器上配置rewrite去掉index.php的方法: vim /usr/local/webserver/nginx/conf/nginx.conf 实例配置代码:  server   {     listen       80;     server_name  www.111cn.net;     index index.html index.htm index.php;     root  /data0/htdocs/lamp100;       #nginx去掉in

ubuntu-springMVC的项目怎么打包服务器上的图片

问题描述 springMVC的项目怎么打包服务器上的图片 服务器是 Ubuntu 12,我想把服务器上的一些文件打包了给用户下载,请问这个要怎么做,能否在项目中执行linux命令 解决方案 你的需求应该是有多个文件想一次性给用户下载.2个方面:1是多个文件打包的问题这个无需调用linux的命令jdk里有zip的api2就是下载了这个没什么好说的.你看理解的是否正确. 然后spring mvc 的开发项目请关注:http://git.oschina.net/wangkang/llsfw(有zip压

nginx-window7下搭建一个Nginx服务器 需要哪些安装环境 并做什么样的配置 急等!

问题描述 window7下搭建一个Nginx服务器 需要哪些安装环境 并做什么样的配置 急等! 需要搭建一个web app测试服务器,要求能处理高并发.最好可以配置一个域名服务测试一下. 解决方案 参考:http://www.cnblogs.com/hxxy2003/archive/2012/09/20/2695254.htmlhttp://blog.csdn.net/dhx20022889/article/details/30219471 解决方案二: 不过Windows 7是客户端操作系统,

服务器端dopost方法中 要怎么得到服务器上的图片并输出

问题描述 服务器端dopost方法中 要怎么得到服务器上的图片并输出 android客户端已经知道怎么下载图片了,服务器端dopost方法中 要怎么得到服务器上的图片 并把他输出传给客户端呢? 解决方案 服务器端的doPost方法 解决方案二: http://zhidao.baidu.com/link?url=2Wtn8blV73YPo4oIiC-NwlCaEsWjFB3FyaA60JfmjbGPNRbO3ra2giQUljpXO2bkIUmT1xfaZXROFmtlkdZBRU_ivRUzXX

android获取服务器上的图片,如何用网格的形式显示出来(类似于相册)

问题描述 android获取服务器上的图片,如何用网格的形式显示出来(类似于相册) 用ListView只能一行显示一块内容,我想一行显示两个item,或者三个,同时支持下拉刷新,下拉加载更多的功能,求大神给我个思路.. 解决方案 1.使用gridview, 2.直接使用listview,每个item中包含两个或者三个bitmap,然后刷新时一次加载2的倍数或者3的倍数的元素 3.下拉刷新,加载更多直接参考pulltorefresh 解决方案二: http://www.cnblogs.com/li

关于new File(path) 路径找不到的问题,我想删除服务器上的图片。

问题描述 关于new File(path) 路径找不到的问题,我想删除服务器上的图片. 代码是这样的: //删除图片 List t_path = Global.getTcmArtisanServiceLocator().getTcmArtisanService().getPicPath(Long.parseLong(artisanId)); String path = ""; if(!t_path.isEmpty()){ path = t_path.get(0).getPhotogra

如何能预览服务器上的图片

问题描述 有一个ftp服务器存储了很多图片,用户想在程序中设计一个功能能像资源管理器那样预览服务器上的图片.对服务器资源进行管理,求教什么方法能做出这种界面. 解决方案 解决方案二:没做过,顶一下解决方案三:lz是做Winform还是Asp.Net,图片是放在数据库里呢,还是文件夹里呢,解决方案四:我觉得这个没什么难度的,就像你写桌面程序一样,只不过来源不是本地磁盘而是FTP.解决方案五:如果是应用程序的话就非常简单了.

在Nginx服务器上屏蔽IP的一些基本配置方法分享_nginx

采集和防止采集是一个经久不息的话题,一方面都想搞别人的东西,另一方面不想自己的东西被别人搞走. 本文介绍如何利用nginx屏蔽ip来实现防止采集,当然也可以通过iptable来实现. 1.查找要屏蔽的ip awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n nginx.access.log 为日志文件, 会到如下结果,前面是ip的访问次数,后面是ip,很明显我们需要把访问次数多的ip并且不是蜘蛛的ip屏蔽掉,本例当中我们屏蔽掉 165