El nombre del archivo de imagen de Nginx elimina las dimensiones modificando uri con expresiones regulares

El nombre del archivo de imagen de Nginx elimina las dimensiones modificando uri con expresiones regulares

En la configuración de nginx, ¿cuál es la mejor manera de devolver la imagen original cuando no se encontró el tamaño de imagen requerido, dadas las convenciones de notación de tamaño/nombramiento de imágenes de WordPress?

Entonces, digamos que si no se encuentra /image-name-150x170.png, quiero que se devuelva /image-name.png. -150-170 parte pueden ser otros números. Por lo tanto, quiero eliminar el guión de 1 a 4 dígitos x 1 a 4 dígitos antes del punto en el nombre del archivo.

Quiero reemplazar el código uri dentro del bloque de ubicación @static_full o reescribirlo. preguntándose cuál sería mejor en cuanto a rendimiento.

#some locations here and then 

location ~* ^.+\.(png|gif|jpg|jpeg){
       access_log off; 
       log_not_found off; 
       expires max; 
       error_page 404 = @static_full;  #if not found, seek #static_ful
}

location @static_full{
  #modify uri here to remove image dimensions like below
  #uri = remove dash 1-4 digits x 1-4 digits before dot
  #or rewrite to original name 
 }

location / {
  try_files $uri $uri/ /index.php?$args ;
}

ACTUALIZACIÓN, descubrí cómo hacerlo. Lo siguiente hizo lo que quería hacer.

location @static_full{
  #modify uri here to remove image dimensions like below
  #uri = remove dash three digits x three digits before dot
  rewrite "^(.*)(-[\d]{1,4}+x[\d]{1,4}+.)([\w]{3,4})" $1.$3 break;
 }

Respuesta1

Podría considerar usar try_filesen lugar de la error_pagedirectiva.

try_files $uri @static_full;

Vereste documentopara detalles.

EDITAR - solución completa agregada:

location ~* ^.+\.(png|gif|jpg|jpeg) {
    try_files $uri @static_full;

    access_log off; 
    log_not_found off; 
    expires max; 
}

location @static_full {
    rewrite "^(.*)(-[\d]{1,4}+x[\d]{1,4}+.)([\w]{3,4})" $1.$3 break;
}

location / {
    try_files $uri $uri/ /index.php?$args ;
}

información relacionada