Использование 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