Re: [Bug] обрезается строка в alias

Anton Kuznetsov tosknight на gmail.com
Ср Июн 2 19:52:30 MSD 2010


Ясно. Честно потратил часов 6 на дебаг и выгугливание, не накопал.
Думаю, стоит как минимум дать ссылку в cоотв. разделе
http://sysoev.ru/nginx/ , все-таки туда смотришь в первую очередь.
Размеры изображений произвольные, в этом вся фишка.
Ну что ж, ясно. Придется заставить поработать бекенд за кешера, пока
что-то не придумается.

А если заставить в подобном месте поработать встроенный перл, большой
оверхед получается? Не хотелось бы из-за одного локейшена терять по
остальному.

Спасибо за сервер, в 95% случаев все удается сделать, как хочется.


2010/6/2 Igor Sysoev <igor на sysoev.ru>:
> On Wed, Jun 02, 2010 at 04:13:37PM +0400, Anton Kuznetsov wrote:
>
>> Похоже на баг.
>>
>> ubuntu 10.04
>> nginx 0.7.65 (из пакетов)
>>
>> кеш картинок в файловой системе, пример
>> /path/to/images/12/12345_240x240.png
>> запросы, пример
>> /images/12345?size=200x200
>>
>> ожидаемый результат - отдать нужную картинку
>>
>> действительный результат:
>> /images/12345 - работает, отдается /path/to/images/12/12345_240x240.png
>> /images/12345?size=240x240 - не работает, уходит на бекенд.
>>
>> в error логе видно, что удалены последние четыре символа из alias
>> /path/to/images/12/12345_240x240
>>
>> если поставить в alias еще одну переменную, сохраненную из $arg_foo,
>> удаляются 8 байт.
>>
>> кусок конфига:
>>
>>       location ~ /image/(\d+)(\d\d\d) {
>>               types { }
>>               default_type image/png;
>>               set $size "240x240";
>>               if ($arg_size) {
>>                       set $size "${arg_size}";
>>               }
>>               alias "/path/to/images/$1/$1$2_${size}.png";
>>               error_page 404 405 502 504 = @fallback;
>>       }
>
> Это из-за if. Если число размеров предопределено, то можно так:
>
>     map $arg_size  $size {
>         default    240x240;
>         200x200    200x200;
>         ...
>     }
>
>     server {
>
>         location ~ /image/(\d+)(\d\d\d) {
>             types { }
>             default_type image/png;
>             alias "/path/to/images/$1/$1$2_${size}.png";
>             error_page 404 405 502 504 = @fallback;
>         }
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>


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