Переписывание Nginx, удаление размеров изображения из имени файла

Переписывание Nginx, удаление размеров изображения из имени файла

Например, если запрос сделан к такому изображению...

/static/images/00f37ac6291bb6e8_150.jpeg

Но версия миниатюры размером 150 пикселей еще не создана и возвращает ошибку 404. Я бы хотел попробовать использовать базовое изображение полного размера, которое всегда будет доступно по адресу...

/static/images/00f37ac6291bb6e8.jpeg

как мне заставить nginx сделать это?

Это то, что я начал, но у меня возникли проблемы с выяснением регулярного выражения. Я также не знаю, является ли это лучшим способом сделать это.

    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;
    }

Также вот что у меня есть для regexpal с этим регулярным выражением... Я не могу понять, как получить расширение файла.

попытка регулярного выражения1

Обновлять:

Вот что я в итоге сделал, и это сработало!

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;
}

решение1

я пошел вregex101.comдля проверки и это регулярное выражение ^(.*)\/(.*)(_)[0,1](.*)\.(.+)$совпало со строкой /static/images/00f37ac6291bb6e8_150.jpeg. При таком совпадении $1/$2.$5 будет путем к большему изображению.

Связанный контент