ngx http image filter module и именованный location
tepkuh
nginx-forum на forum.nginx.org
Пн Фев 27 08:58:12 UTC 2017
Коллеги,
Есть задача:
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