Использование get параметров запроса $arg_name в try_files

Maxim Dounin mdounin at mdounin.ru
Wed Apr 22 21:04:12 MSD 2009


Hello!

On Wed, Apr 22, 2009 at 07:37:38PM +0300, Taras Murashko wrote:

> Здравствуйте,
> 
> Решил обратится к сообществу за советом.
> При переходе с lighttpd хочу попутно реализовать отдачу пользовательских
> картинок через nginx(0.7.50).
> Урл картинок: /img/$img_id/$file_name?width=$width&heigth=$height
> Путь к файлу:
> /opt/images/$img_id_$file_name/T_w$width_h$height_fORIGINAL_$img_id_$file_name
> Если в запросе не указаны width и heigth
> то путь к файлу: /opt/images/$img_id_$file_name/$img_id_$file_name
> 
> Судя по документации параметры запроса хранятся в перемменых $arg_*name*
> Я попробовал следующий конфиг:
>         location ~* ^/img/([0-9]+)/(.*)?(.*)$ {
>              root /opt/images;
>              try_files /$1_$2/T_w$arg_width_h$arg_height_fORIGINAL_$1_$2
> /$1_$2/$1_$2  @backend;
>         }
> 
>         location / {
>         proxy_set_header  Host     $host;
>             proxy_pass http://127.0.0.1:5000;
>         }
> 
>         location @backend {
>         proxy_set_header  Host     $host;
>             proxy_pass http://127.0.0.1:5000;
>         }
> Но если в запросе присутствуют параметры width и heigth к примеру
> /img/1/1.jpg?width=100&height=100
> то nginx не отдает файл с заданными размерами, хотя если вместо
> try_files /$1_$2/T_w$arg_width_h$arg_height_fORIGINAL_$1_$2  /$1_$2/$1_$2
> @backend;
> прописать явно
> try_files /$1_$2/T_w100_h100_fORIGINAL_$1_$2   /$1_$2/$1_$2  @backend;
> то отдается  файл с заданными размерами 100 на 100.
> 
> В чем может быть проблема ?


Вероятно - в том, что параметра $arg_height_fORIGINAL_ нет, равно 
как и $arg_width_h.  Решение - использовать ${...} нотацию.

Maxim Dounin





More information about the nginx-ru mailing list