【发布时间】:2011-01-03 23:45:40
【问题描述】:
所以我将我的网站从 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 行,然后请求文件磁盘可以工作。
关于如何解决这个问题的任何想法?
【问题讨论】:
-
你能分享virual.conf文件吗?