分享

OpenResty(Nginx)+Lua+GraphicsMagick实现图片截图与缓存( 二)

  1. 安装openresty(自动官网下载安装)
  2. 安装GraphicsMagick
    1. sudo apt-get install GraphicsMagick
    1. 配置openresty下的nginx配置文件(/usr/local/openresty/nginx/config/nginx.conf)
      worker_processes1;
      # 日志级别调试时可设为notice,生产环境请设为error
      error_log  /usr/local/openresty/nginx/logs/error.log notice;
      events
         {
             use epoll;
             worker_connections51200;
         }
      http
         {
             lua_package_path'/usr/local/openresty/nginx/lua/?.lua;;';
             
             server{
                     listen      8055;
                     server_name  localhost;
                     root  /usr/local/nginx/html;
                     
                     #/thumbnail目录下的图片请求不经过缩略图模块
                     location^~/imgcache/{
             
                     }
                     
                     #对类似_100x100.gif/jpg/png/jpeg进行缩略图处理
                     location~*_([0-9]+)x([0-9]+)\.(gif|jpg|png|jpeg)${                 #匹配文件名规则
                             set$image_root/usr/local/nginx/html;                 #图片目录
                             set$thumbnail_root/usr/local/nginx/html/imgcache;   #缩略图存放目录
                             #如果缩略图文件存在,直接返回
                             set$file $thumbnail_root$uri;
                             if(-f $file){
                                     rewrite^/(.*)$/imgcache/$1 last;
                             }
                             #如果缩略图文件不存在,则应用缩略图模块处理
                             if(!-f $file){
                                     rewrite_by_lua_file lua/thumbnail.lua;
                             }
                     }
             }
      }

      4.配置lua配置文件(/usr/local/openresty/nginx/lua/config.lua)

      --nginx thumbnailmodule
      --lastupdate:2014/8/21
      --version    :0.4.1
      module(...,package.seeall)
      
      --[[
      enabled_log:是否打开日志
      lua_log_level:日志记录级别
      gm_path:graphicsmagick安装目录
      img_background_color:填充背景色
      enabled_default_img:是否显示默认图片
      default_img_uri:默认图片链接
      default_uri_reg:缩略图正则匹配模式,可自定义
      _[0-9]+x[0-9]对应:001_100x100.jpg
      _[0-9]+x[0-9]+[.jpg|.png|.gif]+对应:001.jpg_100x100.jpg
      ]]
      enabled_log=true
      lua_log_level        =ngx.NOTICE
      gm_path='/usr/bin/gm'
      img_background_color  ='white'
      enabled_default_img    =true
      default_img_uri='/default/notfound.jpg'
      default_uri_reg      ='_[0-9]+x[0-9]+[.jpg|.png|.gif]+'
      quality=80 --质量
      direction	            = 'southeast'--位置
      warter_dissolve=50 --百分比
      warter_img_uri              ='/usr/local/nginx/html/default/water.png'
      --[[
      配置项,对目录、缩略图尺寸、裁剪类型进行配置,匹配后才进行缩略图处理
      1.sizes={'350x350'}填充后保证等比缩图
      2.sizes={'300x300_'}等比缩放
      3.sizes={'50x50^'}裁剪等比缩放(缺点:裁剪了图片的一部分)
      dir="/"     对应根目录,请放在default之前
      dir="default"对应默认图片尺寸,当原图不存在时,请求该尺寸会以默认图片生成缩略图
      ]]
      cfg={
      {
      dir      ='/',
      sizes    ={'50x50^','100x100^','250x250^','300x300^','350x350^','80x80^','120x120^'},
      },
      {dir  ='default',
      sizes={'50x50^','100x100^','250x250^','300x300^','350x350^','80x80^'},
      }
      }
      

      5.lua脚本(/usr/local/openresty/nginx/lua/thumbnail.lua)

      重新加载nginx命令 nginx -s reload

留言