【发布时间】:2014-04-26 01:36:19
【问题描述】:
我有一个本地目录(上传)和一个 S3 存储桶设置。
当用户上传图像时,文件存储在本地目录中:/uploads/member_id/image_name
30 分钟后,系统将文件上传到 S3,路径相同:s3.amazonaws.com/bucket/member_id/image_name;
我已经在我的 nginx 服务器上设置了这个重写规则,但是它不起作用。 此规则应检查文件是否在本地存在,如果不存在,则打开 S3..
的代理知道如何解决吗?
location /uploads/
{
rewrite ^/uploads/(.*)/([A-Za-z0-9\._]*)$ /uploads/$1/$2?imgname=$2&member=$1;
try_files $uri @fallback;
}
location @fallback
{
resolver 8.8.8.8;
proxy_pass $scheme://s3.amazonaws.com/bucket/$arg_member/$arg_imgname;
proxy_set_header Host s3.amazonaws.com;
}
【问题讨论】:
-
你是否设置了根定义,以便 nginx 知道在本地搜索文件的位置?
-
是的,根目录已设置,如果我删除位置 /uploads/ 我可以在本地看到文件。
-
尝试将 error_log 指令添加到备用位置,并将详细信息放在这里。从 S3 代理文件最重要的是 proxy_pass 和 resolver 但您可以像这里一样调整它:coderwall.com/p/rlguog