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 がより大きな画像へのパスになります。

関連情報