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

我去了正規表示式101.com進行測試,此正規表示式^(.*)\/(.*)(_)[0,1](.*)\.(.+)$與 string 相符/static/images/00f37ac6291bb6e8_150.jpeg。透過此匹配,$1/$2.$5 將是通往較大影像的路徑。

相關內容