Nginx 代理通过 aws s3 给出 403

Nginx 代理通过 aws s3 给出 403

我有一个 Web 应用程序,它使用 awscli 将图像上传到服务器并将其复制到 s3 存储桶。服务器上的 Nginx 通过反向代理从 s3 检索图像。当我尝试使用 url 打开图像时,它给出 403 响应。但从 s3 存储桶 url 打开图像似乎根本没有问题。

这是 nginx 代理配置:

proxy_cache_path /var/www/cache/s3 levels=1:2 keys_zone=s3cache:60m max_size=4G;
server {
    listen 80;
    server_name img.domain.com;

    location / {
            limit_except GET { deny all; }

            access_log off;
            log_not_found off;

            proxy_ignore_headers "Set-Cookie";
            proxy_hide_header "Set-Cookie";
            proxy_set_header cookie "";

            proxy_hide_header x-amz-delete-marker;
            proxy_hide_header x-amz-id-2;
            proxy_hide_header x-amz-request-id;
            proxy_hide_header x-amz-version-id;

            proxy_hide_header etag;

            proxy_cache s3cache;
            proxy_cache_valid 200 28d;
            proxy_cache_valid 403 24h;
            proxy_cache_valid 404 24h;

            proxy_intercept_errors on;
            error_page 403 404 /404.html;

            proxy_pass https://s3.amazonaws.com/bucket/;

            add_header X-Cache $upstream_cache_status;
            expires max;
    }

}

存储桶策略是正确的。有趣的是,我发现在每次批量上传后重新启动 nginx 或在上传后等待数小时,403 响应就会消失。

我是否遗漏了什么或者做错了什么?

相关内容