需手动编译启用ngx_http_image_filter_module模块,依赖GD、PCRE、Zlib和OpenSSL开发包,配置时须显式添加--with-http_image_filter_module参数并静态编译,最后通过nginx -V验证集成。

Linux下通过源码编译安装 Nginx 并启用 ngx_http_image_filter_module(即 ImageFilter 模块),需要手动添加该模块,因为官方预编译包和默认 configure 不包含它。该模块支持 JPEG、GIF、PNG 图像的缩放、旋转、裁剪等处理,但依赖 GD 库,且仅工作在 HTTP 的响应体中(即只能处理后端返回的图片,不能用于静态文件直接处理)。
确认系统依赖已安装
ImageFilter 模块编译前需确保以下开发库存在:
-
GD 库开发包:提供图像处理能力(
libgd-dev在 Debian/Ubuntu,gd-devel在 CentOS/RHEL) -
PCRE 开发包:用于正则匹配(
libpcre3-dev或pcre-devel) -
Zlib 和 OpenSSL 开发包:分别用于 gzip 压缩和 HTTPS 支持(
zlib1g-dev/zlib-devel,libssl-dev/openssl-devel)
以 Ubuntu 为例:
sudo apt update && sudo apt install -y build-essential libgd-dev libpcre3-dev zlib1g-dev libssl-dev
下载并解压 Nginx 源码
从 nginx.org 下载稳定版源码(如 nginx-1.24.0.tar.gz),解压后进入目录:
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
配置编译参数并启用 image_filter 模块
运行 ./configure 时显式启用 --with-http_image_filter_module,并指定必要路径(如 GD 头文件和库路径,多数系统可自动探测):
./configure \
--prefix=/usr/local/nginx \
--with-http_image_filter_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-pcre \
--with-zlib=../zlib-1.3 \
--with-openssl=../openssl-3.0.12
注意:
– 若系统 GD 安装路径非标准(如自定义编译),可通过 --with-http_image_filter_module=DIR 或设置 GD_INCLUDE/GD_LIB 环境变量指定;
– image_filter 模块默认不开启动态加载,必须静态编译进 Nginx。
编译安装并验证模块
执行编译与安装:
make -j$(nproc)
sudo make install
检查模块是否集成成功:
/usr/local/nginx/sbin/nginx -V 2>&1 | grep -o "image_filter"
若输出 image_filter,说明模块已内置。再检查配置语法并启动:
echo "location /img/ { image_filter resize 300 200; }" > /usr/local/nginx/conf/conf.d/image.conf
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx
访问 http://your-server/img/test.jpg 即可看到缩放后的图片(前提是后端能返回 JPG 响应,例如 proxy_pass 到一个图片服务)。

















