神刀安全网

nginx动态图片大小设置

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

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

nginx动态图片大小设置

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动态图片大小设置

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址