nginx+imgproxy实现图片自动缩放裁剪

nginx+imgproxy实现图片自动缩放裁剪

背景

在项目开发过程中,经常会遇到一张图片在不同场景下需要使用不同的尺寸,本文旨在使用nginx+imgproxy实现图片的自动裁剪

软件要求

  • git,用于拉去nginx扩展代码

  • docker,用于拉起imgproxy

  • nginx,略

  • imgproxy,实现图片自动裁剪,以及转码;本文使用docker拉起,不做安装

  • lua,实现文件名的特殊处理

  • ngx_devel_kit,nginx模块,用于安装lua-nginx-module和set-misc-nginx-module

  • lua-nginx-module nginx扩展,实现nginx调用lua

  • set-misc-nginx-module针对uri做encode/decode

软件安装

docker

sudo yum -y update && sudo yum -y install docker # 安装
sudo systemctl enable docker && sudo systemctl start docker

git

imgproxy

imgproxy拉起

--user root 根据实际情况,如果文件默认都有读权限,可以不需要

--env="IMGPROXY_LOCAL_FILESYSTEM_ROOT=/app/images",用于指定imgproxy图片根目录

-v /opt/data/backend/file:/app/images 用于映射本地目录到imgproxy图片根目录

lua

ngx_devel_kit

lua-ngix-module

set-misc-nginx-module

nginx 重新编译/安装

如果重新编译,可以看下nginx之前编译参数

nginx配置

开启nginx缓存

图片自动裁剪/转码

nginx重启

参数说明

比如原图

http://www.domain.com/api/static/file/xxxxxx.png

缩略图

http://www.domain.com/api/static/file/xxxxxx.png?p=true&w=300&t=jpg&f=fit\

最后更新于