OpenResty(Nginx)+Lua+GraphicsMagick实现图片截图与缓存( 二)
- 安装openresty(自动官网下载安装)
- 安装GraphicsMagick
- sudo apt-get install GraphicsMagick
- 配置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