ФорумРазработкаУстановка и администрирование ПОВебсервер → image filter nginx

image filter nginx

  • kryptamine

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2015 г. 6:30

    Товарищи, подскажите пожалуйста, захотел на уровне nginx отдавать ресайзнутые изображения и thumbnail'ы.
    Скомпилил nginx как это полагается с image_filter_module.
    Столкнулся с проблемой, если изображения большое, получаю следующую ошибку:
    2015/04/14 06:14:38 [error] 6979#0: *1 image filter: too big response: 2819630 while reading response header from upstream, client: 5.44.169.2, server:
    Как с этим бороться и вообще насколько это хорошая практика ресайзить большие изображения на уровне nginx?

    Спустя 270 сек.

    починилось. забыл про image_filter_buffer 1M;
    Но вопрос по поводу актуальности этого метода остается открытым.

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 14 апреля 2015 г. 9:27, спустя 2 часа 56 минут 55 секунд

    Да, проблема была в буфере. Ресайзить через nginx большие картинки нормально, главное кешируй результат

    Вот пример конфига с кеширование adw0rd/django-nginx-image [github.com]

    Спустя 37 сек.

    @phpdude ссылкутна свой конфиг приведи

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 14 апреля 2015 г. 9:53, спустя 26 минут 35 секунд

    @adw0rd, вот это готовое решение получается чуть практичнее моего. я ответ этого сервиса через свой "location" проксирую чтобы не светить

    fredpalmer/dimwit [github.com]

    Спустя 22 сек.

    ну а вообще вот конфиг https://gist.github.com/phpdude/1451684

    Nginx image filter + caching of results.
    Supports dynamic thumbnails images sizes processing + caching results, simple to use.
    Awesome!!!
    view raw readme.txt hosted with ❤ by GitHub
    location /resize {
    alias /tmp/nginx/resize;
    set $width 150;
    set $height 100;
    set $dimens "";
    if ($uri ~* "^/resize_(\d+)x(\d+)/(.*)" ) {
    set $width $1;
    set $height $2;
    set $image_path $3;
    set $dimens "_$1x$2";
    }
    if ($uri ~* "^/resize/(.*)" ) {
    set $image_path $1;
    }
    set $image_uri image_resize/$image_path?width=$width&height=$height;
    if (!-f $request_filename) {
    proxy_pass http://127.0.0.1:8080/$image_uri;
    break;
    }
    proxy_store /tmp/nginx/resize$dimens/$image_path;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path /tmp/images;
    proxy_set_header Host $host;
    }
    location /image_resize {
    alias /path/to/media/;
    image_filter resize $arg_width $arg_height;
    image_filter_jpeg_quality 75;
    allow 127.0.0.0/8;
    deny all;
    }
    view raw nginx.conf hosted with ❤ by GitHub

    Спустя 113 сек.

    и таки да, проблема была в буфере - это раз.

    два - если картинки != фотки с фицр фотоаппаратов, nginx пойдет. если с фотиков, то nginx режет все метаданные тем самым убивая всякие уровни контрастности фото, глубину и тп. Углы поворота тож соответственно.

    Если картинки != фотки - nginx самое оно.

    Спустя 33 сек.

    а вообще, Сысоеву добавить бы флаг на то, что копировать из метаданных фото. Оставив возможность копировать цветовые профили например.

    Сапожник без сапог
  • kryptamine

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2015 г. 9:58, спустя 4 минуты 40 секунд

    Спасибо большое! Очень помогли!

Пожалуйста, авторизуйтесь, чтобы написать комментарий!