美文网首页LNMP开发程序员我用 Linux
[LNMP]缩略图网关:Nginx的http_image_fil

[LNMP]缩略图网关:Nginx的http_image_fil

作者: tumg的LNMP_IOS小集 | 来源:发表于2016-02-20 13:36 被阅读659次

    http_image_filter_module是nginx官方提供的图片处理模块,支持jpg、gif、png格式,但模块不是默认安装,需要在编译安装的时候开启本模块。官方模块地址:image_filter_module

    图片裁剪+缩略图

    解决应用需求


    1. 生成指定比例/尺寸的图片;
    2. 压缩图片体积,生成图片的缩略图;
    3. 图片缓存加速。

    解决方案


    image_filter_module + proxy_cache,前者实现图片处理,后者实现静态内容缓存。
    1台nginx前端(proxy_cache)+n台图片后端处理(http_image_filter_module)

    安装


    <pre>
    gd库依赖安装:yum install gd-devel
    模块安装:在已有的编译参数加上新参数并重新编译 --with-http_image_filter_module
    </pre>

    配置


    前端机(反向代理机)nginx(proxy_cache)配置
    1. 创建缓存目录
      <pre>
      chown –R nobody/data/ nginx_temp /data/nginx_cache
      </pre>
    2. 在原配置上新增

    <pre>
    http {

    proxy_temp_path /data/nginx_temp;
    proxy_cache_path /data/nginx_cache levels=1:2 keys_zone=dCache:200minactive=10d max_size=3g;

    }

    server {
    location / {

    proxy_cache dCache;
    proxy_cache_valid 200 301 302 10d;
    proxy_cache_valid 404 500 503 1m;
    proxy_cache_key $host$uri$is_args$args;
    proxy_pass http://images_filter;

    }
    }
    </pre>

    后端机nginx配置

    <pre>

    裁剪为60*60图片

    location ~/index/w60/ (.+)$ {
    proxy_pass http://www.example.com/$2;
    image_filter crop 60 60;
    image_filter_jpeg_quality 80;
    error_page 415 = /empty;
    }

    裁剪为宽度为300的图片

    location ~/index/w300/ (.+)$ {
    proxy_pass http:// www. example.com/$2;
    image_filter resize 300 -;
    image_filter_jpeg_quality 80;
    error_page 415 = /empty;
    }
    </pre>

    配置参数


    off 关闭
    test 测试
    size json格式返回图片信息
    rotate 旋转
    resize 缩放(如果要等比缩放,则 其中一个参数用 – 表示)
    crop 裁减(如果要等比裁减,则 其中一个参数用 – 表示)
    image_filter_jpeg_quality: jpg图片质量,从1~100

    启动


    安装完成后,将所有的nginx服务重启,则服务启动完成。

    小结


    1. 用于等比图片缩略图效果较好,根据热点图片的数量和负载相应调节前端机(proxy_cache)的内存缓存和硬盘缓存的空间;
    2. 改变原比例的裁减效果不佳(居中裁减),毕竟图片的焦点区域不可预测;
    3. 图片修改后,缓存图片不会同步修改(需另外引入proxy_cache_purge 模块)。

    总结,该方案适用于简单的图片缩略图网关,对机器性能要求不高,博主在日均100w pv的应用中使用,约4核4g服务器,压力不大;

    整理于2014/10

    相关文章

      网友评论

        本文标题:[LNMP]缩略图网关:Nginx的http_image_fil

        本文链接:https://www.haomeiwen.com/subject/cgyvkttx.html