Коллеги,
Есть задача:
1) Картинки хранятся в хранилище на Amazon доступ к которому из вне без
авторизации запрещен.
2) Нужно тащить из Амазона картинку и ресайзить её.

Для решения этой задачи там где не нужен модуль image_filter я такую задачу
решаю так:
1) Есть named location который обеспечивают всю историю с авторизацией
2) И есть несколько обычных location которые отдают контент пользователям
уже без авторизации.

Например вот:

location ~ ^/video/(\d+)/(.*\.(?:png))$ {
        set $url_full   "video/$1/$2";
        try_files               $uri @s3;
}

location @s3 {
        set $bucket                     'bucketname';
        set $aws_access         'my_key';
        set $aws_secret         'my_secret';
        set_by_lua                      $now    "return 
ngx.cookie_time(ngx.time())";
        set                             
        $string_to_sign 
"$request_method\n\n\n\nx-amz-date:${now}\n/$bucket/$url_full";
        set_hmac_sha1           $aws_signature $aws_secret $string_to_sign;
        set_encode_base64       $aws_signature $aws_signature;
        
        resolver                        172.31.0.2 valid=300s;
        resolver_timeout        10s;

        proxy_http_version      1.1;
        proxy_set_header        Host    $bucket.s3.amazonaws.com;
        proxy_set_header        x-amz-date      $now;
        proxy_set_header        Authorization   "AWS 
$aws_access:$aws_signature";
        proxy_buffering         off;    
        proxy_pass      https://$bucket.s3.amazonaws.com/$url_full;
}

Так вот коллеги, вопрос в том что аналогичная штука но с использованием
image_filter у меня не прокатывает.

Пример location для этих самых картинок которые требуется ресайзить:
location ~ ^/img/(xs|s|m)/(\d+)/(.*\.(?:jpg|gif|png))$ {
        set                     $img_size $1;
        set             $url_full       "img/$2/$3";
        try_files       $uri @s3;
        if ($img_size = "xs") {
                set $width 50;
        }
        if ($img_size = "s") {
                set $width 100;
        }
        if ($img_size = "m") {
                set $width 200;
        }
        image_filter resize $width -;
}

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,272636,272636#msg-272636

_______________________________________________
nginx-ru mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить