Also meine Seite Ich bin bewegt von Apache weg und auf Nginx, und ich habe Probleme mit diesem Szenario:Nginx Proxy-Dateien auf lokalen Festplatte oder S3
Börse ein Foto. Dieses Foto wird in der Größe geändert und dann in S3 kopiert. Wenn auf der Festplatte ein geeigneter Speicherplatz vorhanden ist (oder die Datei nicht in S3 übertragen werden kann), wird eine lokale Version beibehalten.
Ich möchte Anforderungen für diese Bilder (z. B. http://www.mysite.com/p/1_1.jpg) zunächst im Verzeichnis p/suchen. Wenn keine lokale Datei vorhanden ist, möchte ich die Anfrage an S3 weiterleiten und das Bild rendern (aber nicht umleiten).
In Apache, ich tat dies in etwa so:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^p/([0-9]+_[0-9]+\.jpg)$ http://my_bucket.s3.amazonaws.com/$1 [P,L]
Mein Versuch, dieses Verhalten in Nginx zu replizieren, ist dies:
location /p/ {
if (-e $request_filename) {
break;
}
proxy_pass http://my_bucket.s3.amazonaws.com/;
}
Was passiert, ist, dass jede Anfrage Amazon S3 zu schlagen versucht, Selbst wenn die Datei auf der Festplatte existiert (und wenn sie nicht auf Amazon existiert, erhalte ich Fehler.) Wenn ich die proxy_pass-Zeile entferne, funktionieren die Anforderungen für Dateien auf der Festplatte.
Irgendwelche Ideen, wie Sie das beheben können?
Können Sie virual.conf-Datei teilen. – Thoman