Reescritura de Nginx, eliminando las dimensiones de la imagen del nombre del archivo

Reescritura de Nginx, eliminando las dimensiones de la imagen del nombre del archivo

Por ejemplo, si se realiza una solicitud a una imagen como esta...

/static/images/00f37ac6291bb6e8_150.jpeg

Pero la versión en miniatura de 150px aún no se ha generado y devuelve un 404. Me gustaría que pruebe la imagen base de tamaño completo que siempre estará disponible en...

/static/images/00f37ac6291bb6e8.jpeg

¿Cómo puedo hacer que nginx haga esto?

Esto es lo que comencé, pero tengo problemas para descifrar la expresión regular. Tampoco sé si esta es la mejor manera de lograrlo.

    location /static/ {
        resolver 8.8.8.8;
        try_files $uri @redirect;
        proxy_pass https://s3.amazonaws.com/<buckets>$request_uri;
    }

    location @redirect {
        rewrite ^(.*)(?=_)(\.*)$ https://s3.amazonaws.com/<buckets>$1;
    }

Además, esto es lo que tengo para regexpal con esa expresión regular... No puedo entender cómo obtener la extensión del archivo.

intento de expresión regular1

Actualizar:

¡Esto es lo que terminé haciendo y funcionó bien!

location /static/images/ {
    resolver 8.8.8.8;
    proxy_intercept_errors on;
    proxy_pass https://s3.amazonaws.com/my-bucket$request_uri;
    error_page 400 401 402 403 404 @redirect;
}

location @redirect {
    rewrite ^(.*)\/(.*)(_)[0,1](.*)\.(.+)$ https://s3.amazonaws.com/my-bucket/images/$2.$5;
}

Respuesta1

fui aregex101.compara probar y esta expresión regular ^(.*)\/(.*)(_)[0,1](.*)\.(.+)$coincide con la cadena /static/images/00f37ac6291bb6e8_150.jpeg. Con esta coincidencia $1/$2.$5 sería el camino hacia la imagen más grande.

información relacionada