nginx 如何在服务端开启图片转换?

8 min read

要在 nginx 服务器上启用图片转换,您需要使用 ImageFilter 模块。

  1. 安装 ImageFilter 模块

要安装 ImageFilter 模块,您需要重新编译 Nginx。要启用该模块,需要使用以下选项:

--with-http_image_filter_module

您可以按照以下步骤重新编译 nginx:

# 下载 nginx 源代码
wget https://nginx.org/download/nginx-1.18.0.tar.gz
tar -xzvf nginx-1.18.0.tar.gz
cd nginx-1.18.0/

# 下载 ImageFilter 模块
wget https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/v0.6.4.tar.gz
tar -xzvf v0.6.4.tar.gz

# 编译 nginx 并启用 ImageFilter 模块
./configure \
--with-http_image_filter_module \
--add-module=./ngx_http_substitutions_filter_module-0.6.4/

make
sudo make install
  1. 配置 Nginx

要配置 Nginx,您需要在 nginx.conf 文件中添加以下配置块:

http {
   ...
   ...
   # 添加 image_filter 模块配置
   image_filter on;
   image_filter_jpeg_quality 75;
   image_filter_buffer 10M;
   
   server {
      ...
      ...
      location /images {
         # 添加转换规则
         image_filter resize 300 200;
      }
   }
}

在上面的示例中,image_filter 开关启用了 ImageFilter 模块。jpeg_quality 设置 JPEG 图像的质量(1 到 100)。image_filter_buffer 设置缓冲区大小。

location 块内,使用 image_filter resize 指令指定要将图像转换为的新大小。上面的示例将图像转换为 300x200。

  1. 重启 Nginx

您需要重新启动 Nginx,以使配置生效。

sudo nginx -s reload

现在,当您访问 /images 目录中的图像时,它们将按照您指定的大小进行转换。