ubuntu 如何通过nginx调整图像大小

wf82jlnq  于 2023-10-17  发布在  Nginx
关注(0)|答案(2)|浏览(147)

各位。告诉我怎么解这个谜。Nginx传递URL类型https://example.com/thumbs/_default_upload_bucket/236/280/5804.jpeg如果此图像不存在,nginx应检索原始图像并调整大小:替换“thumbs/”和大小“236/280/”URL将是https://example.com/_default_upload_bucket/5804.jpeg
如果我理解正确,通过模块ngx_http_image_filter_module来做到这一点。
如何通过nginx做到这一点谢谢.

oewdyzsn

oewdyzsn1#

Nginx为动态镜像提供了image_filter模块。这个Nginx配置将允许像**http://server.com/images/880/dis.jpg**这样的请求-这个图像将被调整为880像素宽,并使用质量值90进行压缩。请求大于10兆字节的图像(在恢复之前)将被调整大小。

server {
  listen 80 default_server;
  server_name server.com;

  location ~ "^/images/(?<width>\d+)/(?<image>.+)$" {
    alias /srv/www/images/$image;
    image_filter resize $width -;
    image_filter_jpeg_quality 90;
    image_filter_buffer 10M;
  }
}
bf1o4zei

bf1o4zei2#

经过研究,我创建了一个我需要的配置。

location ~* /thumbs/(.*)/(\d+)/(\d+)/(.*)$ {
    set $bucket $1;
    set $width $2;
    set $height $3;
    set $filename $4;
    try_files /$1/$2/$3/$4 @images;
    root /var/www/html/tmp/image-thumbnails;
    expires 2w;
    access_log off;
}

location @images {
    root /var/www/html/assets/;
    rewrite ^.*$ /$bucket/$filename break;
    image_filter_buffer 50M;
    image_filter resize $width $height;
}

相关问题