У меня на сайте тысячи картинок и каждую приходится ресайзить на лету, для чего на node написал обработчик которые проверяет существует ли уменьшенная копия и/или если нет создает ее.
Мне хочется сделать проверку наличия статики с помощью nginx, чтобы ноду подрубать только в том случае если картинка отсутствует. Пытаюсь это реализовать, но из за нехватки знаний пока что ничего не выходит.
Как все происходит
Оригинал хранится в папке /var/www/SITE/original/01/pic.webp
Копии сохраняются в папке /var/www/SITE/tmp/100/01/pic.webp
Запрос на создание копии SITE/original/01/pic.webp?fit=resize&w=100&display=true
Этот запрос уходит в обработчик /image/
location @image {
expires 1y;
rewrite ^/original/(.*)$ /image?$args&image=$1? last;
}
Я пытаюсь добиться следующего
location ~* /o/(.*)\.(webp|jpg)\?fit=resize&w=100&display=true {
#проверить наличие файла /var/www/SITE/tmp/100/01/pic.webp
# случае его отсутствия выполнить location @Image
try_files $uri @image;
}
Пробовал хотя бы отобразить картинку,
rewrite ^/original/(.*)$ /tmp/100/$1? last;
но ничего не вышло, по логам я вижу ошибку следующего типа
2023/10/14 11:39:45 [error] 1120289#1120289: *9825858 open() "/etc/nginx/html/original/01/pic.webp" failed (2: No such file or directory), client: IP, server: SITE, request: "GET /original/01/pic.webp?fit=resize&w=100&display=true HTTP/2.0", host: "SITE"