все. подскажите как решить эту загадку. 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. Спасибо.
я проверю эту статью, спасибо.
после исследований я создал нужную мне конфигурацию.
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;
}
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;
}
}
Это может быть отправной точкой: nginx.com/blog/response-images-without-headaches-nginx-plus и вот еще одна интересная статья: stumbles.id.au/nginx-dynamic-image-resizing-with-caching.html