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

Maxim Dounin mdounin at mdounin.ru
Wed Jun 17 02:36:39 UTC 2015


Hello!

On Tue, Jun 16, 2015 at 07:53:32PM -0400, cilrill wrote:

[...]

> пытался вставить проверку вида 
> 
> 
>         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, даже если в аргументах передавал другое значение.
> 
> подскажите плз как исправить ситуацию?

Не надо пытаться установить переменную $arg_q, от этого будут 
сплошные проблемы и никакого счастья.

Правильно как-то так:

   set $q 75;
   if ($arg_q) {
       set $q $arg_q;
   }

   image_filter_jpeg_quality $q;

Или даже так:

   map $arg_q $q {
       default 75;
       ~[0-9]+ $arg_q;
   }

   image_filter_jpeg_quality $q;

-- 
Maxim Dounin
http://nginx.org/



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