Nginx redirect to url if image does not exist

Задача: только для статики сделать перенаправление (302 редирект), если файл не был найден.
Самый правильный способ - не использовать ifв данном случае, это может показаться странным, но на практике, с данной задачей лучше справится try_files. Будет выглядеть так:

Вариант №1:

location ~* \.(jpg|jpeg|gif)$ {
    root /home/www/;
    try_files $uri @imgproxy;
    }
<p>location @imgproxy {
        rewrite ^/img/(.*) http://nagg.ru/img/$1;
    }

Вариант №2:

location ~* \.(jpg|jpeg|gif)$ {
     if (!-f $request_filename) {
         rewrite ^/images/(.*) http://nagg.ru/images/$1 break;
     }
    root /home/www/;
    }

Оба варианта рабочие.
Удачи!

Добавить комментарий