Re: [Bug] обрезается строка в alias
Igor Sysoev
igor на sysoev.ru
Ср Июн 2 16:43:59 MSD 2010
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