使用nginx动态转换图片大小生成缩略图
Nginx的ngx_http_image_filter_module模块(nginx版本为0.7.54+)可用来动态转换JPEG,GIF,PNG,和WebP格式的图片大小。
该模块默认没有构建,需要通过--with-http_image_filter_module配置参数启用。
如果图片访问量不大,可以使用该模块。
该模块使用了libgd库。推荐使用该库的最新版本。
以下为在已经安装了nginx的情况下添加该模块的步骤。
1安装依赖
yum-yinstallgd-devel yum-yinstalllibxslt-devel yum-yinstallperl-develperl-ExtUtils-Embed
2查看原nginx参数
nginx-V
输出结果如下:
nginxversion:nginx/1.12.2
configurearguments:
查看是否有--with-http_image_filter_module,如果有则说明已经安装过,否则继续安装。
3编译
重新编译时需要下载和原来相同版本的nginx源码,解压。
添加--with-http_image_filter_module=dynamic及原来的参数(不需要执行makeinstall命令重新安装)
./configure--with-http_image_filter_module=dynamic make
4备份原nginx
cp-r/usr/local/nginx/usr/local/nginxbak
5覆盖nginx
cpobjs/nginx/usr/local/nginx/sbin/ mkdir/usr/local/nginx/module cpobjs/ngx_http_image_filter_module.so/usr/local/nginx/module/ngx_http_image_filter_module.so
6修改配置文件
vim/usr/local/nginx/conf/nginx.conf
load_module/usr/local/nginx/module/ngx_http_image_filter_module.so; location~*/images/(.+)_(\d+)x(\d+)\.(jpg|jpeg|gif|png)${ set$w$2; set$h$3; image_filterresize$w$h; image_filter_buffer30M;#设置图片缓冲区的最大大小,大小超过设定值,服务器将返回错误415 image_filter_interlaceon; image_filter_jpeg_quality80; try_files/$1.$4/notfound.jpg; expires1d; add_header'Access-Control-Allow-Origin''*'; add_header'Access-Control-Allow-Credentials''true'; alias/home/publisherupload/;#root能够让访问/images/路径时,访问到/User/XX/Desktop/images,如果将root替换为alias,则访问的是/User/XX/Desktop/;其中/User/XX/Desktop/是本机中的绝对路径。 } location/images{ alias/home/publisherupload/;#root能够让访问/images/路径时,访问到/User/XX/Desktop/images,如果将root替换为alias,则访问的是/User/XX/Desktop/;其中/User/XX/Desktop/是本机中的绝对路径。 autoindexon;#打开目录浏览功能 }
7重载nginx配置
/usr/local/nginx/sbin/nginx-s
8测试
最终的图片访问地址为在原图片地址后面加入_宽度X高度参数
http://110.87.103.58:12345/images/2021-01/202101250944272_500x400.png
参考
https://cloud.tencent.com/developer/article/1644466
到此这篇关于使用nginx动态转换图片大小生成缩略图的文章就介绍到这了,更多相关nginx动态转换图片大小内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!