http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建议使用。
安装
安装还是很简单的,默认HttpImageFilterModule模块是不会编译进nginx的,所以要在configure时候指定
./configure arguments: --prefix=/usr/local/nginx --with-http_image_filter_module
PS: HttpImageFilterModule模块需要依赖gd-devel的支持,可以使用yum或apt-get方便地安装,如果未安装回报“/configure: error: the HTTP image filter module requires the GD library.”错误
yum install gd-devel
apt-get install libgd2-xpm libgd2-xpm-dev
make&&make install后就可以进行配置了,做最简单的配置,先让模块可以跑起来^^
location ~ /simg/.*\.jpg$ { #proxy_pass http://10.11.11.11; #rewrite "/simg/(.*\.jpg)$" /img/$1 break ; image_filter resize 100 100; error_page 415 = /empty; }
该模块主要有两个指令:
指令1:
语法: image_filter (test | size | resize width height | crop width height)
默认是: 无
可出现的上下文: location
该指令指定图像的转化形式:
(1)test - 测试回复是否是JPEG、GIF、或PNG图片(不支持BMP等其他格式),出错时返回415。
(2)size - 返回图片的JSON数据,比如:( "Img": ( "width": 100, "height": 100, "type": "gif"))
(3)resize - 根据设置按比例得减小图像,比如100*100的图片,而设置是50*25,减小后的图片为25*25。如果你只想设置一个维度,可以用“-”代替。出错时返回415。
(4)crop - 根据设置按比例得减小图像,然后裁剪成跟设置一样大小的图片。比如100*100的图片,而设置是50*25,减小后的图片为50*50,Nginx会选取中间高度25的像素,形成50*25的图片,所以图片会有缺失。如果你只想设置一个维度,可以用“-”代替。出错时返回415。
指令2:
语法: image_filter_buffer size
默认值: image_filter_buffer 1M
可出现的位置: http, server, location
该指令设置单图片缓存的最大值,如果过滤的图片大小超过缓存大小,会报错返回415。
用法
现在开始是重点:
有了如上认识再配合locaiont、if、image_filter 就可以让nginx动态生成缩略图了。
假设你的图片位于/img目录下
访问缩略图方式
http://www.xxx.cn/img/9GUMJR7200AJ0003_90x90.jpg
访问原图方式
http://www.xxx.cn/img/9GUMJR7200AJ0003_90x0.jpg http://www.xxx.cn/img/9GUMJR7200AJ0003_0x50.jpg http://www.xxx.cn/img/9GUMJR7200AJ0003_0x0.jpg http://www.xxx.cn/img/9GUMJR7200AJ0003.jpg
添加如下配置到server上下文即可
location ~* /img/(.+)_(d+)x(d+).(jpg|gif|png)$ { set $h $2; set $w $3; if ($h = "0") { rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last; } if ($w = "0") { rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last; } #根据给定的长宽生成缩略图 image_filter resize $h $w; #原图最大2M,要裁剪的图片超过2M返回415错误,需要调节参数image_filter_buffer image_filter_buffer 2M; #error_page 415 /img/notfound.jpg; try_files /img/$1.$4 /img/notfound.jpg; } location ~* /img { } location ~* /img/(.+)_(d+)x(d+).(jpg|gif|png)$ { set $h $2; set $w $3; if ($h = "0") { rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last; } if ($w = "0") { rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last; } #根据给定的长宽生成缩略图 image_filter resize $h $w; #原图最大2M,要裁剪的图片超过2M返回415错误,需要调节参数image_filter_buffer image_filter_buffer 2M; #error_page 415 /img/notfound.jpg; try_files /img/$1.$4 /img/notfound.jpg; } location ~* /img { }
本文向大家介绍Python使用自带的ConfigParser模块读写ini配置文件,包括了Python使用自带的ConfigParser模块读写ini配置文件的使用技巧和注意事项,需要的朋友参考一下 在用Python做开发的时候经常会用到数据库或者其他需要动态配置的东西,硬编码在里面每次去改会很麻烦。Python自带有读取配置文件的模块ConfigParser,使用起来非常方便。 ini文件 in
本文向大家介绍Nginx stub_status 监控模块的功能实现,包括了Nginx stub_status 监控模块的功能实现的使用技巧和注意事项,需要的朋友参考一下 Nginx 的 stub_status 模块用于查看 Nginx 的基本状态信息。 模块实现的功能 通过这个模块,可以看到如下的 Nginx 状态信息: 其中: Active connections:活跃的连接数 accepts
使用具有不同配置的一个模块 FreeRADIUS允许您使用具有各种配置的一个模块。 如前所述,如果您熟悉编程术语,则类似于具有不同实例的对象。 试一试 - 创建一个模块的多个实例 Isaac陷入困境。 他完全忘记了教授的帐户也会过期,他不想在回复信息中向教授讲学生语言。 是时候解决这个问题: 编辑FreeRADIUS配置目录下modules子目录中的expiration文件。 更改以下行: #re
本文向大家介绍Python中zipfile压缩文件模块的基本使用教程,包括了Python中zipfile压缩文件模块的基本使用教程的使用技巧和注意事项,需要的朋友参考一下 zipfile Python 中 zipfile 模块提供了对 zip 压缩文件的一系列操作。 mode的几种: 解压:r 压缩:w 追加压缩:a 压缩一个文件 创建一个压缩文件 test.zip(如果test.zip文件不存
本文向大家介绍Node.js站点使用Nginx作反向代理时配置GZip压缩的教程,包括了Node.js站点使用Nginx作反向代理时配置GZip压缩的教程的使用技巧和注意事项,需要的朋友参考一下 node.js 开发的站点,如果你也是用了nginx实现反向代理. 那么在服务端可以轻松实现 gzip 压缩,让站点浏览更顺畅. 前提条件: node.js + nginx 反向代理. node.js 需
本文向大家介绍php生成图片缩略图功能示例,包括了php生成图片缩略图功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php生成图片缩略图功能。分享给大家供大家参考,具体如下: 完整代码如下(为方便阅读,代码使用http://tools.jb51.net/code/phpformat进行了格式化处理): PS:这里再为大家推荐几款比较实用的图片处理工具供大家参考使用: 在线图片转换
本文向大家介绍Symfony2在Nginx下的配置方法图文教程,包括了Symfony2在Nginx下的配置方法图文教程的使用技巧和注意事项,需要的朋友参考一下 本文详细讲述了Symfony2在Nginx下的配置方法。分享给大家供大家参考,具体如下: 网上有很多关于symfony2在nginx下的配置文章,如果是小白,按照网上贴出来的配置文件配置,却怎么也不成功,我经过多次摸索,写下心得: 1. 首
本文向大家介绍详解nginx使用ssl模块配置HTTPS支持,包括了详解nginx使用ssl模块配置HTTPS支持的使用技巧和注意事项,需要的朋友参考一下 默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中。通常这个文件名类似libssl-dev。 生成证书