nignx实现图片截图与缓存 一

一,使用Nginx插件 image_filter

  1. 在nginx.conf配置如下
      1. # 我使用16进制数的方式给图片重命名
      2. location~*/(.*)\/([0-9a-f]+)_(\d+)x(\d+)\.(jpg|png|jpeg|gif)${
      3.    # 如果存在文件就终止规则
      4.    if(-f $request_filename){
      5.        break;
      6.    }
      7.    
      8.    # 设定一些参数
      9.    set$filepath $1;
      10.    set$filename"$2.$5";
      11.    set$thumb    "$2_$3x$4.$5";
      12.    set$width    $3;
      13.    set$height   $4;
      14.    
      15.    # 如果原文件不存在可以直接返回404
      16.    if(!-f $document_root/$filepath/$filename){
      17.        return404;
      18.    }
      19.    # 重写URL
      20.    rewrite/(.*)\/([0-9a-f]+)_([0-9x]+)\.(jpg|png|jpeg|gif)/$1/$2.$4break;
      21.    # 执行图片缩放
      22.    image_filter test;
      23.    image_filter resize $width $height;
      24.    image_filter_jpeg_quality75;
      25. }


  2. 重启nginx ,然后就可以访问了 : http://localhost:8080/mglsoft/1_600x600.jpg

  3. 在公司重新整理了一下

      1.        location~*/(.*)\/([0-9a-f]+)\.(jpg|png|jpeg|gif)@(\d+)x(\d+)Q_([rc])${
      2.            if(-f $request_filename){
      3.                break;
      4.            }
      5.            set$filepath $1;
      6.            set$filename"$2.$3";
      7.            set$thumb    "$2_$4x$5.$3";
      8.            set$width    $4;
      9.            set$height   $5;
      10.            set$type    $6;
      11.            if($type='r'){
      12.                set $type  'image-resize'; #旋转
      13.            }
      14.        
      15.            if($type='c'){
      16.              set$type  'image-crop';#剪切
      17.          }
      18.        
      19.            if(!-f $document_root/$filepath/$filename){
      20.                return404;
      21.            }
      22.            rewrite/(.*)\/([0-9a-fx_]+)\.(.*)/imgcache/$2.$4;
      23.            if(!-f $request_filename){
      24.                proxy_pass $scheme://127.0.0.1:$server_port/$type/$filepath/$filename?width=$width&height=$height;
      25.                break;
      26.            }
      27.            proxy_store          $document_root/imgcache/$thumb;
      28.            proxy_store_access   user:rw  group:rw  all:r;
      29.            proxy_set_header    Host$host;
      30.            expires  10d;# 设置图片过期时间10天
      31.        }
      32.        location/image-resize{
      33.            rewrite/(image-resize)/(.*)/$2break;
      34.            image_filter resize $arg_width $arg_height;
      35.            image_filter_jpeg_quality75;
      36.            #allow 127.0.0.0/8;
      37.            #deny all;
      38.        }
      39.        location/image-crop{
      40.            rewrite/(image-crop)/(.*)/$2break;
      41.            image_filter crop $arg_width $arg_height;
      42.            image_filter_jpeg_quality75;
      43.            #allow 127.0.0.0/8;
      44.            #deny all;
      45.        }
      46.    }

      通过以下路径访问: http://aidemofang.com/test/[email protected]_r



参考:

   http://0x1.im/blog/nginx/use-nginx-image-filter-module.html

   https://blog.wangjunfeng.com/archives/669