Así que me estoy moviendo mi sitio alejado de Apache y en Nginx, y estoy teniendo problemas con este escenario:Nginx proxy de archivos en el disco local o S3
usuario sube una foto. Esta foto se redimensiona y luego se copia a S3. Si hay espacio adecuado en el disco (o el archivo no se puede transferir a S3), se guarda una versión local.
Quiero solicitudes para que estas imágenes (como http://www.mysite.com/p/1_1.jpg) se vean por primera vez en el directorio p /. Si no existe ningún archivo local, quiero enviar la solicitud por proxy a S3 y renderizar la imagen (pero no redirigir).
En Apache, lo hice de esta manera:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^p/([0-9]+_[0-9]+\.jpg)$ http://my_bucket.s3.amazonaws.com/$1 [P,L]
Mi intento de replicar este comportamiento en Nginx es la siguiente:
location /p/ {
if (-e $request_filename) {
break;
}
proxy_pass http://my_bucket.s3.amazonaws.com/;
}
Lo que pasa es que cada solicitud intenta golpear a Amazon S3, incluso si el archivo existe en el disco (y si no existe en Amazon, obtengo errores). Si elimino la línea proxy_pass, entonces las solicitudes de archivos en el disco SI funcionan.
¿Alguna idea sobre cómo solucionar esto?
Puede compartir el archivo virual.conf. – Thoman