
502 エラーが発生した場合に、s3 バケットから静的ファイルを取得しようとしています。
リクエスト用に 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 を使用して Web サイトの負荷を増やすと (502 エラーが生成されることを確認しました)、ブラウザーは 403 エラー (403 Forbidden) を受け取ります。
そしてブラウザにはこのようなメッセージが表示されます。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>some_string</RequestId>
<HostId>
something
</HostId>
また、「return 502」のコメントを解除し、「try_files statement」をコメント化して負荷を増やすと、s3 は引き続きファイルを正しく提供します。
負荷が高いために 403 エラーが表示されるのに、手動で 502 を返すとそのようなエラーが発生しないのはなぜでしょうか。また、負荷が高い場合 (502 エラー) に S3 バケットからデータを取得する他の代替スタイルはありますか。また、手動で送信される 502 エラーと負荷が高いために送信される 502 エラーは同じですか。