
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.
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.