ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как правильно обрабатывать статику в Nginx?

У меня на сайте тысячи картинок и каждую приходится ресайзить на лету, для чего на 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"
  • Вопрос задан
  • 205 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы