Nginx 재작성, 파일 이름에서 이미지 크기 제거

Nginx 재작성, 파일 이름에서 이미지 크기 제거

예를 들어, 다음과 같은 이미지에 대한 요청이 이루어진다면...

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

또한 이것은 해당 정규식을 사용하여 정규 표현식에 대해 가지고 있는 것입니다. 파일 확장자를 가져오는 방법을 알 수 없습니다.

정규 표현식 시도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가 더 큰 이미지로 가는 경로가 됩니다.

관련 정보