我正在尝试从 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 错误是否相同?