
예를 들어, 다음과 같은 이미지에 대한 요청이 이루어진다면...
/static/images/00f37ac6291bb6e8_150.jpeg
하지만 150px 썸네일 버전은 아직 생성되지 않았으며 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;
}
또한 이것은 해당 정규식을 사용하여 정규 표현식에 대해 가지고 있는 것입니다. 파일 확장자를 가져오는 방법을 알 수 없습니다.
업데이트:
이것이 내가 한 일이며 잘 작동했습니다!
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](.*)\.(.+)$
string 과 일치합니다 /static/images/00f37ac6291bb6e8_150.jpeg
. 이 일치를 사용하면 $1/$2.$5가 더 큰 이미지로 가는 경로가 됩니다.