为了账号安全,请及时绑定邮箱和手机立即绑定

[LNMP]缩略图网关:Nginx的http_image_filter_module应用

标签:
PHP

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服务器,压力不大;



作者:tumg的LNMP_IOS小集
链接:https://www.jianshu.com/p/9d820f85b791

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消