resize image как задать переменную, если ее нет в аргументах

cilrill nginx-forum at nginx.us
Tue Jun 16 23:53:32 UTC 2015


Добрый день.

Хочу ресайзить картинки, используя ссылки вида 
hostname/img.png?s=100&q=20

где hostname/img.png - путь к оригинальной картинке а два аргумента s и q -
ширина и качество преобразованной картинки


работает следующая конфигурация.

        location ~ ^/(.*\.(?:jpg|gif|png))$ {
        alias /home/$host/$1;
        image_filter resize $arg_s -;
        image_filter_jpeg_quality $arg_q;
        access_log /var/log/nginx/access.img.log;
        }

но как обрабатывать ссылки вида hostname/img.png?s=100 без указания явно
аргумента отвечающего за качество картинки?

пытался вставить проверку вида 


        location ~ ^/(.*\.(?:jpg|gif|png))$ {
        alias /home/$host/$1;
        if ( $arg_q = "") {
              set $arg_q 75;
         }
        image_filter resize $arg_s -;
        image_filter_jpeg_quality $arg_q;
        access_log /var/log/nginx/access.img.log;
        }

при попадании в location - ругается, что используется необъявленная
переменная arg_q и все рушится.
пытался задать переменную вне location - 

       set $arg_q 75;

image_filter_jpeg_quality после этого в локейшене выполняется с параметром
75, даже если в аргументах передавал другое значение.

подскажите плз как исправить ситуацию?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,259674,259674#msg-259674



Подробная информация о списке рассылки nginx-ru