高负载下对 S3 存储桶数据请求的访问被拒绝

高负载下对 S3 存储桶数据请求的访问被拒绝

我正在尝试从 s3 存储桶中获取静态文件,以防止出现 502 错误。

以下是我为请求配置 nginx 的方式:

error_page 502 = @static;
location / {
  index index.php;
  try_files $uri $uri/ /index.php;
# return 502;
  proxy_intercept_errors on;
}

location @static{
  rewrite ^/name/(.*) ^/bucket_name/$1 break;
  proxy_pass http://s3.amazonaws.com;
}

当 nginx 无法处理巨大负载时,就会发送 502 错误。

现在,当我取消注释“return 502”语句并注释try_files语句时,一切都正常,并且数据由s3存储桶正确提供。

但是对于上面给出的代码,当我使用 loader.io 增加网站的负载时(我已经检查它会产生 502 错误),浏览器会收到 403 错误(403 Forbidden)。

浏览器上会显示此类消息,

<Error>
  <Code>AccessDenied</Code>
  <Message>Access Denied</Message>
  <RequestId>some_string</RequestId>
  <HostId>
    something
  </HostId>

当我取消注释“return 502”并注释“try_files 语句”并增加负载时,s3 仍然可以正确提供文件。

有什么想法吗,为什么我会收到由于负载过重而导致的 403 错误,但手动返回 502 时却没有这样的错误?此外,在负载过重(502 错误)的情况下,还有其他替代方式可以从 s3 存储桶中获取数据吗?手动发送的 502 错误和由于负载过重而发送的 502 错误是否相同?

相关内容