부하가 높은 s3 버킷의 데이터 요청에 대한 액세스가 거부되었습니다.

부하가 높은 s3 버킷의 데이터 요청에 대한 액세스가 거부되었습니다.

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;
}

502 오류는 nginx가 막대한 부하를 처리할 수 없을 때 전송됩니다.

이제 '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 오류가 수동으로 전송되고 과부하로 인해 전송됩니까?

관련 정보