Proxy Nginx pour les Fichiers sur le Disque Local ou S3

Je suis donc un déplacement de mon site à l'écart de Apache et Nginx sur, et je vais avoir du mal avec ce scénario:

Utilisateur télécharge une photo. Cette photo est redimensionnée, et de le copier dans S3. S'il convient de place sur le disque (ou le fichier ne peut pas être transféré à S3), une version locale est conservé.

Je veux les demandes de ces images (comme http://www.mysite.com/p/1_1.jpg) de regarder d'abord dans le p/répertoire. Si aucun fichier n'existe pas, je veux proxy la demande pour S3 et le rendu de l'image (mais pas de redirection).

Dans Apache, je l'ai fait comme ça:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^p/([0-9]+_[0-9]+\.jpg)$ http://my_bucket.s3.amazonaws.com/$1 [P,L]

Ma tentative de reproduire ce comportement dans Nginx est-ce:

location /p/{
    if (-e $request_filename) {
        break;
    }
    proxy_pass http://my_bucket.s3.amazonaws.com/;
}

Ce qui se passe, c'est que chaque demande tente de frapper Amazon S3, même si le fichier existe sur le disque (et si elle n'existe pas sur Amazon, j'ai des erreurs.) Si je supprime le proxy_pass ligne, puis les demandes de fichiers sur le disque fonctionnent.

Aucune idée sur comment résoudre ce problème?

Pouvez-vous partager virual.fichier conf.

OriginalL'auteur Coomer | 2010-01-12