nginx模块image_filter

发布于 2016-10-18 作者 [重庆SEO]

项目有个的需求,需要根据URL参数的不同动态调整图片大小,使用Nginx的一个图片处理模块ngx_http_image_filter_module就可以实现动态调整图片了。

安装NGINX模块和部署步骤

1.安装gd-devel库

http_image_filter_module依赖gd-devel库,因此安装http_image_filter_module模块前需要首先安装gd-devel库。

Redhat、Centos运行如下命令安装:

# yum install -y gd-devel 

Debian、Ubuntu运行如下命令安装:

# apt-get install libgd2-xpm libgd2-xpm-dev 

2.NGINX安装http_image_filter_module模块 (tengine大同小异)

安装完gd-devel库后就可以重新编译安装nginx了,编译前需要./configurer指定编译http_image_filter_module模块:

# ./configure --prefix=/usr/local/nginx --with-http_image_filter_module
# make && make install 

3.设置nginx配置

这是我的一个demo, url结构根据需要和喜欢稍作调整即可

### nginx 图片动态调整大小
location ~ "^(/photos/.*\.(jpg|png|jpeg|bmp|JPG|GIF|PNG|BMP))!(\d)x(\d+)$" {
 set $w $3;
 set $h $4;
 if ($w = "0") {
 	set $w "-";
 }
 if ($h = "0") {
 	set $h "-";
 }
 rewrite ^(/photos/.*\.(jpg|png|jpeg|bmp|JPG|GIF|PNG|BMP))!(\d+)x(\d+)$ $1 break;
 image_filter resize $w $h;  #按宽高对图片进行压缩
 image_filter_buffer 2M;  #设置图片缓冲区的最大大小,大小超过设定值,服务器将返回错误415
 image_filter_jpeg_quality 95;
 try_files $1 404;
 expires 10d;
} 

最后,重新加载nginx配置使之生效,image_filter旋转图片以及更多裁剪用法请查看相关资料