내용으로 건너뛰기

CloudFront에서 502 ‘The request could not be satisfied’ 오류를 해결하려면 어떻게 해야 합니까?

4분 분량
0

사용자 지정 도메인을 사용하여 Amazon CloudFront 배포를 구성했습니다. CloudFront를 사용하여 대체 정식 이름(CNAME) 도메인을 요청할 때 표시되는 502 ‘The request could not be satisfied’ 오류를 해결하고 싶습니다.

해결 방법

CloudFront는 오리진 IP 주소를 확인할 수 없음

CloudFront가 오리진 도메인을 확인할 수 없는 경우 ‘The request could not be satisfied’ 오류를 반환합니다. 배포에서 Amazon Virtual Private Cloud(Amazon VPC) 오리진만 사용하지 않는 한, CloudFront는 퍼블릭 DNS 쿼리를 통해 오리진 도메인을 확인할 수 있어야 합니다.

오리진을 공개적으로 액세스할 수 있도록 설정할 필요는 없지만 해당 도메인을 공개적으로 쿼리할 수 있어야 합니다. 이 문제를 해결하려면 dig 또는 nslookup 명령을 사용하여 오리진 도메인이 IP 주소로 확인되는지 파악하십시오.

Linux를 사용하는 경우 다음 명령을 실행합니다.

dig ORIGIN_DOMAIN_NAME

Windows를 사용하는 경우 다음 명령을 실행합니다.

nslookup ORIGIN_DOMAIN_NAME

참고: ORIGIN_DOMAIN_NAME을 오리진의 도메인 이름으로 바꾸십시오.

명령은 오리진 도메인 이름의 IP 주소를 반환합니다. DNS 검사기 도구를 사용하여 여러 지역에서 DNS 확인을 확인할 수 있습니다. 예를 들어 DNS 검사기 웹 사이트에서 DNS 전파 확인 도구를 사용할 수 있습니다. 확인 방법으로 오리진 도메인을 쿼리하지 못하는지 확인하십시오. 그런 다음, 퍼블릭 DNS 공급자에게 문의하여 오리진 도메인에 대해 공개적으로 확인 가능한 DNS 레코드가 있는지 확인하십시오.

DNS 문제 해결에 대한 자세한 내용은 DNS는 어떻게 작동하며 부분적이거나 간헐적인 DNS 장애는 어떻게 해결합니까?를 참조하십시오.

SSL/TLS 인증서가 도메인 이름과 일치하지 않음

오리진의 SSL/TLS 인증서에는 다음 도메인 이름 중 하나가 포함되어야 합니다.

  • 인증서의 일반 이름 필드 또는 주체 대체 이름 필드에 있는 오리진 도메인 이름
  • 요청이 CloudFront 배포에서 오리진에 전달하는 수신 뷰어 호스트 헤더의 호스트 헤더 도메인 이름

인증서에서 일반 이름주체 대체 이름을 확인하려면 다음 명령을 실행합니다.

openssl s_client -connect DOMAIN:443 -servername SERVER_DOMAIN | openssl x509 -text | grep -E '(CN|Alternative)' -A 2

참고: DOMAIN을 오리진 도메인 이름으로 바꾸고 SERVER_DOMAIN을 오리진 도메인 이름으로 바꾸십시오. 요청이 뷰어의 호스트 헤더를 오리진으로 전달하는 경우 SERVER_DOMAIN을 수신 호스트 헤더 값으로 바꾸십시오.

다음과 같은 시나리오에서 호스트 헤더를 포함하도록 캐시 정책 또는 오리진 요청 정책을 구성해야 합니다.

  • 오리진의 인증서에는 뷰어 호스트 헤더 값이 SSL/TLS 인증서의 일반 이름 또는 주체 대체 이름(SAN)으로 포함됩니다.
  • 요청은 호스트 헤더를 오리진에 전달하지 않습니다.

오리진 인증서가 만료되었거나, 신뢰할 수 없거나, 자체 서명되었거나, 인증서 체인의 순서가 잘못되었음

신뢰할 수 있는 인증 기관(CA)은 사용자 지정 오리진에 설치한 인증서에 서명해야 합니다. 신뢰할 수 있는 CA 목록은 Mozilla 웹 사이트의 인증 기관을 참조하십시오. CloudFront는 자체 서명된 SSL/TLS 인증서를 사용하는 오리진을 지원하지 않습니다.

오리진 인증서가 만료되었는지 확인하려면 다음 OpenSSL 명령을 실행합니다.

openssl s_client -connect DOMAIN:443 -servername SERVER_DOMAIN | openssl x509 -text | grep Validity -A 3

참고: DOMAIN을 오리진 도메인 이름으로 바꾸고 SERVER_DOMAIN을 오리진 도메인 이름으로 바꾸십시오. 요청이 뷰어의 호스트 헤더를 오리진으로 전달하는 경우 SERVER_DOMAIN을 수신 호스트 헤더 값으로 바꾸십시오.

명령 출력에서 Not BeforeNot After 파라미터를 찾으십시오. 현재 날짜 및 시간이 인증서 유효 기간 내에 있는지 확인합니다.

중간 CA 인증서가 없거나 중간 인증서의 순서가 잘못되면 HTTPS와 오리진 간의 통신이 실패합니다.

인증서 체인을 확인하려면 다음 명령을 실행합니다.

openssl s_client -showcerts -connect DOMAIN:443 -servername SERVER_DOMAIN

참고: DOMAIN을 오리진 도메인 이름으로 바꾸고 SERVER_DOMAIN을 오리진 도메인 이름으로 바꾸십시오. 요청이 뷰어의 호스트 헤더를 오리진으로 전달하는 경우 SERVER_DOMAIN을 수신 호스트 헤더 값으로 바꾸십시오.

자세한 내용은 CloudFront에서 SSL/TLS 인증서를 사용하기 위한 요구 사항을 참조하십시오.

CloudFront는 오리진의 암호 제품군을 지원하지 않음

협상된 공통 암호 제품군이 없는 경우 CloudFront와 오리진 간의 SSL/TLS 트랜잭션이 실패합니다. 이 문제를 해결하려면 지원되는 프로토콜과 암호를 사용해야 합니다.

SSL 서버 테스트 도구를 사용하여 지원되는 암호 목록에 오리진 암호 제품군이 포함되어 있는지 확인하십시오. 예를 들어 Qualys 웹 사이트에서 SSL 서버 테스트를 사용할 수 있습니다.

업스트림 오리진 문제가 있음

오리진에 연결된 프록시 콘텐츠 전송 네트워크(CDN) 호스트 이름 또는 로드 밸런서를 CloudFront 배포에서 사용자 지정 오리진으로 사용할 수 있습니다. 이러한 중개 서비스 중 하나가 오리진에 연결하지 못하면 502 오류가 발생합니다. 이 문제를 해결하려면 오리진 서비스 제공업체에 문의하십시오.

Application Load Balancer를 오리진으로 사용하는 경우 Application Load Balancer HTTP 502 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

Amazon API Gateway를 사용하는 경우 Lambda 프록시 통합을 사용하는 API Gateway REST API에서 발생하는 HTTP 502 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

CloudFront 배포와 연결된 Lambda@Edge 함수가 검증에 실패했음

Lambda@Edge 함수가 유효하지 않은 응답을 CloudFront에 반환하면 CloudFront는 502 오류를 반환합니다. 이 문제를 해결하려면 Lambda@Edge 함수에서 다음 문제를 확인하십시오.

  • JSON 객체가 반환됩니다.
  • 필수 필드가 누락되었습니다.
  • 응답의 객체가 유효하지 않습니다.
  • 추가 또는 업데이트 기능이 허용되지 않습니다.
  • 헤더가 읽기 전용입니다.
  • 최대 본문 크기를 초과했습니다.
  • 문자나 값이 유효하지 않습니다.

이러한 문제를 해결하려면 Lambda@Edge 함수 테스트 및 디버깅을 참조하십시오. 또한 CloudFront에서 Lambda@Edge 함수로 인해 발생하는 502 및 503 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

AWS 공식업데이트됨 6달 전