Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
nginx:resize-image [2020/02/21 06:41]
admin создано
nginx:resize-image [2020/02/21 06:48]
admin
Строка 1: Строка 1:
 ====== Динамический ресайз изображений ====== ====== Динамический ресайз изображений ======
  
-<file ini nginx.conf>+<file ini /etc/nginx/nginx.conf>
 include /usr/share/nginx/modules/mod-http-image-filter.conf; include /usr/share/nginx/modules/mod-http-image-filter.conf;
 +</file>
 +
 +<file ini /etc/nginx/conf.d/img-resize.conf>
 +# Сервер для изменения размеров изображений
 +# @see https://habr.com/ru/post/77873/
 +server {
 +  listen                          8082;
 +
 +  access_log                      /var/log/nginx/img-resize.access.log combined;
 +  error_log                       /var/log/nginx/img-resize.error.log;
 +
 +  # Ошибки отправляем на отдельный location
 +  error_page                      403 404 415 500 502 503 504 = @404;
 +
 +  # информация
 +  location ~ ^/i/(.+) {
 +      # грязный хак от Игоря Сысоева
 +      # try_files — чувствителен к пробелам и русским символам, поэтому пришлось сделать костыль с alias
 +      alias                       /vhosts/site.ru/www/$1;
 +      try_files                   "" @404;
 +
 +      # Проверяем правильность ссылки и md5
 +
 +      # Используем соответсвующий фильтр
 +      image_filter                size;
 +  }
 +
 +  # crop
 +  location ~ ^/c/(\d+|-)x(\d+|-)/(.+) {
 +      set                         $width  $1;
 +      set                         $height $2;
 +
 +      alias                       /vhosts/site.ru/www/$3;
 +      try_files                   "" @404;
 +
 +      image_filter                crop  $width  $height;
 +  }
 +
 +  # resize
 +  location ~ ^/r/(\d+|-)x(\d+|-)/(.+) {
 +      set                         $width  $1;
 +      set                         $height $2;
 +
 +      alias                       /vhosts/site.ru/www/$3;
 +      try_files                   "" @404;
 +
 +      image_filter                resize  $width  $height;
 +  }
 +
 +  location @404 { return 404; }
 +}
 +</file>
 +
 +<file ini /etc/nginx/img-resize-location.conf>
 +location ~ ^/preview/([cir])/(.+) {
 +    # Тип операции
 +    set                         $oper $1;
 +    # Параметры изображения и путь к файлу
 +    set                         $remn $2;
 +    # Проксируем на отдельный хост
 +    proxy_pass                  http://127.0.0.1:8082/$oper/$remn;
 +    proxy_intercept_errors      on;
 +    error_page                  404 = /empty.gif;
 +    # Кеширование
 +    proxy_cache                 cache_img;
 +    proxy_cache_key             "$host$document_uri";
 +    # 200 ответы кешируем на 1 день
 +    proxy_cache_valid           200 1d;
 +    # остальные ответы кешируем на 1 минуту
 +    proxy_cache_valid           any 1m;
 +}
 +</file>
 +
 +<file ini /etc/nginx/conf.d/caches.conf>
 +# Кеш для изображений
 +proxy_cache_path /tmp/nginx-cache_img   # путь
 +  levels=1:                           # количество уровней
 +  keys_zone=cache_img:10m               # название:размер зоны, 1Мб ~ 8000 ключей (1 ключ - 1 запрос)
 +  max_size=1g                           # размер данных кеша, при превышении удаляются наиболее старые
 +  inactive=7d                           # время хранения запроса на диске с момента последнего обращения, независимо от Cache-Control
 +  use_temp_path=off;                    # off - используем proxy_cache_path; on - используем proxy_temp_path, указанный в location
 +</file>
 +
 +<file ini /etc/nginx/conf.d/site.ru.conf>
 +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 /vhosts/site.ru/www;
 +  index  index.php index.html;
 +  access_log off;
 +  expires 30d;
 +  include img-resize-location.conf;
 +}
 </file> </file>
  
  
Печать/экспорт