Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
nginx:resize-image [2020/02/21 06:41] admin создано |
nginx:resize-image [2020/02/21 06:56] admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Динамический ресайз изображений ====== | ====== Динамический ресайз изображений ====== | ||
- | <file ini nginx.conf> | + | Данный способ позволит делать динамический ресайз изображений с кешированием результатов на диске. |
+ | |||
+ | ===== Подключение модуля ngx_http_image_filter_module ===== | ||
+ | |||
+ | <file ini /etc/nginx/nginx.conf> | ||
include / | include / | ||
+ | </ | ||
+ | |||
+ | ===== Создание сервера для изменения размеров изображений на порту 8082 ===== | ||
+ | |||
+ | <file ini / | ||
+ | # Сервер для изменения размеров изображений | ||
+ | # @link https:// | ||
+ | server { | ||
+ | listen | ||
+ | |||
+ | access_log | ||
+ | error_log | ||
+ | |||
+ | # Ошибки отправляем на отдельный location | ||
+ | error_page | ||
+ | |||
+ | # информация | ||
+ | location ~ ^/i/(.+) { | ||
+ | # грязный хак от Игоря Сысоева | ||
+ | # try_files — чувствителен к пробелам и русским символам, | ||
+ | alias / | ||
+ | try_files | ||
+ | |||
+ | # Проверяем правильность ссылки и md5 | ||
+ | |||
+ | # Используем соответсвующий фильтр | ||
+ | image_filter | ||
+ | } | ||
+ | |||
+ | # crop | ||
+ | location ~ ^/ | ||
+ | set | ||
+ | set | ||
+ | |||
+ | alias / | ||
+ | try_files | ||
+ | |||
+ | image_filter | ||
+ | } | ||
+ | |||
+ | # resize | ||
+ | location ~ ^/ | ||
+ | set | ||
+ | set | ||
+ | |||
+ | alias / | ||
+ | try_files | ||
+ | |||
+ | image_filter | ||
+ | } | ||
+ | |||
+ | location @404 { return 404; } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ===== Создание location, который будет обслуживать ресайз изображений ===== | ||
+ | |||
+ | <file ini / | ||
+ | location ~ ^/ | ||
+ | # Тип операции | ||
+ | set $oper $1; | ||
+ | # Параметры изображения и путь к файлу | ||
+ | set $remn $2; | ||
+ | # Проксируем на отдельный хост | ||
+ | proxy_pass | ||
+ | proxy_intercept_errors | ||
+ | error_page | ||
+ | # Кеширование | ||
+ | proxy_cache | ||
+ | proxy_cache_key | ||
+ | # 200 ответы кешируем на 1 день | ||
+ | proxy_cache_valid | ||
+ | # остальные ответы кешируем на 1 минуту | ||
+ | proxy_cache_valid | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Кеширование измененных изображений ===== | ||
+ | |||
+ | <file ini / | ||
+ | # Кеш для изображений | ||
+ | proxy_cache_path / | ||
+ | levels=1: | ||
+ | keys_zone=cache_img: | ||
+ | max_size=1g | ||
+ | inactive=7d | ||
+ | use_temp_path=off; | ||
+ | </ | ||
+ | |||
+ | ===== Настройка сайта ===== | ||
+ | |||
+ | <file ini / | ||
+ | location = /empty.gif { | ||
+ | empty_gif; | ||
+ | } | ||
+ | |||
+ | location ~* ^.+\.(jpg|jpeg|gif|png|css|js|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ { | ||
+ | root / | ||
+ | index index.php index.html; | ||
+ | access_log off; | ||
+ | expires 30d; | ||
+ | include img-resize-location.conf; | ||
+ | } | ||
</ | </ | ||