Условно обслуживать изображения webp с NGINX и Magento 2 - PullRequest
0 голосов
/ 10 июля 2020

У меня проблемы с пониманием того, как показывать изображения на Magento 2 с помощью NGINX. Все работает правильно, пока в кэше мультимедиа Magento нет файла JPG и его необходимо генерировать с помощью

location @media { try_files $uri $uri/ /get.php$is_args$args; }

. Когда я добавил этот блок #webp в конфигурацию nginx, он больше не обрабатывается ниже этих ## изображений block, и если я снова удалю #webp block, медиа-кеш будет сгенерирован с @media, как и должно быть по умолчанию.

Моя цель - обслуживать изображения webp (сгенерированные отдельным скриптом в исходное местоположение jpg / png, только файл разницы extension), и когда в папке кэша мультимедиа нет изображения, оно будет сгенерировано, как Magento по умолчанию

Вопрос в том, как объединить эти два изображения #webp и ## ...

 location /media/ { 

     #webp
        location ~* ^(/media/.+)\.(png|jpe?g)$ {
               set $base $1;
               set $webp_uri $base$webp_suffix;
               set $webp_old_uri $base.$2$webp_suffix;
               set $root "/var/www/magento/htdocs/pub/";
               root $root;
               expires 60s;
               add_header Cache-Control "public";
               add_header Vary Accept;
                if ( !-f $root$webp_uri ) {
                       add_header X_WebP_SP_Miss $root$webp_uri;
                 }
               try_files $webp_uri $webp_old_uri $uri $uri/ @media ;
       }       


     # images css js (default magento block)
        location ~* \.(jpg|jpeg|png|webp|gif|svg|js|css|ico|txt)$ {
              expires max;
              add_header Cache-Control "public";
              try_files $uri $uri/ @media;
        }


     ## fonts
    
        location ~* \.(swf|eot|ttf|otf|woff|woff2)$ {
             expires max;
             add_header Cache-Control "public";
             try_files $uri $uri/ @media;
       }

       try_files $uri $uri/ @media;


  }

      location @static { rewrite /static/(version\d*/)?(.*)$ /static.php?resource=$2 last; }
      location @media { try_files $uri $uri/ /get.php$is_args$args; }
...