Итак, я перемещаю свой сайт из Apache и на Nginx, и у меня возникают проблемы с этим сценарием:
Пользователь загружает фотографию. Эта фотография изменяется, а затем копируется на S3. Если на диске есть подходящая комната (или файл не может быть передан на S3), локальная версия сохраняется.
Мне нужны запросы для этих изображений (например, http://www.mysite.com/p/1_1.jpg), чтобы сначала посмотреть в каталоге p/. Если локальный файл не существует, я хочу проксировать запрос на S3 и отображать изображение (но не перенаправлять).
В Apache я сделал это так:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^p/([0-9]+_[0-9]+\.jpg)$ http://my_bucket.s3.amazonaws.com/$1 [P,L]
Моя попытка реплицировать это поведение в Nginx такова:
location /p/ {
if (-e $request_filename) {
break;
}
proxy_pass http://my_bucket.s3.amazonaws.com/;
}
Что происходит, так это то, что каждый запрос пытается поразить Amazon S3, даже если файл существует на диске (и если он не существует на Amazon, я получаю ошибки.) Если я удалю строку proxy_pass, тогда запросы на файлы на диск DO работать.
Любые идеи о том, как исправить это?