
Например, если запрос сделан к такому изображению...
/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 с этим регулярным выражением... Я не могу понять, как получить расширение файла.
Обновлять:
Вот что я в итоге сделал, и это сработало!
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 будет путем к большему изображению.