Nginx neu schreiben, Bildabmessungen aus dem Dateinamen entfernen

Nginx neu schreiben, Bildabmessungen aus dem Dateinamen entfernen

Wenn beispielsweise eine Anforderung für ein Bild wie diese gestellt wird ...

/static/images/00f37ac6291bb6e8_150.jpeg

Aber die 150-Pixel-Miniaturansicht wurde noch nicht generiert und gibt eine 404-Fehlermeldung zurück. Ich möchte, dass es mit dem Basisbild in voller Größe versucht wird, das immer unter ... verfügbar sein wird.

/static/images/00f37ac6291bb6e8.jpeg

wie kann ich nginx dazu bringen, dies zu tun?

Damit habe ich begonnen, aber ich habe Probleme, den regulären Ausdruck herauszufinden. Ich weiß auch nicht, ob das der beste Weg ist, dies zu erreichen.

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

Das ist auch, was ich für Regexpal mit diesem regulären Ausdruck habe … Ich kann nicht herausfinden, wie ich die Dateierweiterung erfassen kann.

Regexpal Versuch1

Aktualisieren:

Das habe ich schließlich gemacht und es hat gut funktioniert!

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

Antwort1

ich ging zuregex101.comzum Testen und dieser reguläre Ausdruck ^(.*)\/(.*)(_)[0,1](.*)\.(.+)$stimmte mit der Zeichenfolge überein /static/images/00f37ac6291bb6e8_150.jpeg. Mit dieser Übereinstimmung wäre $1/$2.$5 der Pfad zum größeren Bild.

verwandte Informationen