美文网首页技匠志程序员
nginx动态图片大小设置

nginx动态图片大小设置

作者: Super_心总 | 来源:发表于2016-09-23 15:45 被阅读680次

近期接到一个需求,要求网站上的图片分三个尺寸显示,后台图片组件(坑货同事写的)已有和业务耦合有点深不好扩展,在浏览众多博客论坛后,发现用nginx http_image_filter_module可以完美解决我的问题。

1.如果已经装好nginx 可以执行nginx -V 查看 arguments 是否有image-filter 模块

2.没有的话 可以从新执行 configure 把image-filter 模块加入,做nginx模块升级 记住不要 make 和make install 这样的话就相当于重新安装了(如果可以的话,建议重新安装)

3. nginx argument 配置

./configure --prefix=/usr/local/nginx/nginx-1.10.1 --sbin-path=/usr/local/nginx/nginx-1.10.1 --with-poll_module --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-openssl=/usr/local/nginx/openssl-1.1.0 --with-pcre=/usr/local/nginx/pcre-8.39 --with-http_image_filter_module

每个模块的具体作用就不在这里说明了,可以去 http://www.nginx.cn/ 或者nginx.org 上自行吸收,根据足记的需求配置。

4. 坑点:在configure时 提示xxxGDxxx 说明环境中没有 image-filter 模块需要的依赖的GD包

(为了方便和gd相关的全部都安装了)

yum -y installgd-devel libjpeg-devel libpng-devel php-gdlibjpeg* libpng* freetype* gd*

mac上的话推荐大家使用 brew包管理 直接 brew install gdlib ok了

5.nginx.conf配置

过滤表达式:^/pic(.*)_(\d+)x(\d+).jpg$

nginx conf

location ~* /pic/(.*)_(\d+)x(\d+)\.jpg$ {

alias /webpic/pic/$1.jpg;

#rewrite /pic/$1.jpg last;

image_filter resize $2 $3;

image_filter_buffer 50M;

}

重点说明 root 和 alias 的区别 root表示真实的文件路径配置root的时要配置到 请求文件路径的父级

alias 则需要全部包含(这个地方坑了我近一天的时间,一直404和415)

6.415错误

裁剪图片是最大的缓存 超过缓存值就会出现415

(但是不一定所有的415都是应为缓存大小不够,也可能是404。对nginx比较熟悉的同学也可做原图404的判断,本人比较懒就不考虑这样的问题了)

至于image-filter 还有好多图片的功能(旋转,水印。。。)就不在这里说明了(其实是我也不会,哈哈)。有兴趣的同学可以仔细研究下,加QQ群147210676 大家一起交流。

相关文章

网友评论

    本文标题:nginx动态图片大小设置

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