nginx配置图片自动缩放/剪裁

291 阅读1分钟

公共文件服务

图片访问压缩

1.本地部署方式 :nginx 安装插件 ngx_http_image_filter_module

1.1安装依赖:

yum -y install gd gd-devel
yum -y install libxslt-devel
yum -y install perl-devel perl-ExtUtils-Embed
 

1.2 查看nginx原参数

 nginx -V
 
 nginx version: nginx/1.20.2
 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
 built with OpenSSL 1.0.2k-fips  26 Jan 2017
 TLS SNI support enabled
 configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
 

1.3 重新编译nginx

重新编译时需要下载和原来相同版本的nginx源码,解压。 添加--with-http_image_filter_module=dynamic及原来的参数(不需要执行make install命令重新安装) 如果编译找不到GD library,建议卸载gd、gd-devel后重新安装依赖

./configure --with-http_image_filter_module=dynamic --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make

1.4 备份原nginx

cp -r /usr/local/nginx /usr/local/nginx-bak

1.5 替换nginx

cp objs/nginx /usr/local/nginx/sbin/
mkdir /usr/local/nginx/module
cp objs/ngx_http_image_filter_module.so /usr/local/nginx/module/ngx_http_image_filter_module.so

1.6 修改nginx配置

在配置的http外配置加载模块

load_module /usr/local/nginx/module/ngx_http_image_filter_module.so;

配置图片处理

# 缩略图配置
location ~* /file/cloud/(.*)\.(jpg|png)_(\d+)_(\d+)$ {
    set $w $3;
    set $h $4;
    image_filter resize $w $h;
    #设置图片缓冲区的最大大小,大小超过设定值,服务器将返回错误415
    image_filter_buffer 30M; 
    image_filter_interlace on;
    image_filter_jpeg_quality 80;
    try_files /$1.$2 /default.jpg;
    expires 1d;
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Credentials' 'true';
    alias /usr/local/youmatech/pic/cloud ;
} 

# 原图访问配置
location /file/cloud {
    alias /usr/local/youmatech/pic/cloud;
}

1.7 图片测试

https://xxxxxxxx/file/cloud/app/resize_test/test.png_100_100
nginx -s reload