클라이언트가 Classic Load Balancer를 통해 웹 사이트로 요청을 전송할 때 HTTP 502 오류가 발생합니다. 이를 해결하려면 어떻게 해야 합니까?

HTTP 502(잘못된 게이트웨이) 오류는 다음 원인 중 하나로 인해 발생할 수 있습니다.

  • EC2 인스턴스에서 실행 중인 웹 서버 또는 연결된 백엔드 애플리케이션 서버에서 Classic Load Balancer가 구문 분석할 수 없는 메시지를 반환합니다.
  • 웹 서버 또는 연결된 백엔드 애플리케이션 서버에서 자체적으로 502 오류 메시지를 반환합니다.

이 502 오류의 원인을 찾으려면:

  • Classic Load Balancer에 대한 ELB 액세스 로그를 활성화하여 각 요청의 백엔드 및 Elastic Load Balancing(ELB) 응답 코드를 표시합니다. 액세스 로그 항목에는 elb_status_codebackend_status_code라는 2개의 필드가 있습니다. 이들 코드를 사용하여 502 오류의 원인을 확인합니다.
  • 로드 밸런서 CloudWatch 측정치에서 백엔드에서 생성된 502 오류를 확인합니다. 이 오류는 HTTPCode_Backend_5XX 측정치 아래에 표시됩니다. ELB에서 생성된 502 오류는 HTTPCode_ELB_5XX 측정치 아래에 표시됩니다.

백엔드 응답이 ELB 502 오류의 원인인 경우 다음으로 인해 문제가 발생할 수 있습니다.

  • 각 헤더 사이에 2개 이상의 CRLF가 포함된 응답.
  • 정수 이외의 값이 들어 있는 Content-Length 헤더가 포함된 응답.
  • 본문에 Content-Length 헤더 값보다 더 많은 바이트가 들어 있는 응답.

백엔드 서버에서 502 오류가 생성된 경우 애플리케이션 소유자에게 문의하십시오. Classic Load Balancer에서 502 오류가 생성된 경우 백엔드에서 전송된 HTTP 응답의 형식이 잘못된 것입니다. ELB에서 생성된 502 오류를 해결하려면 다음 단계를 따르십시오.

1. 백엔드 애플리케이션에서 반환된 응답 본문이 다음 RFC에서 설명하는 HTTP 사양에 맞는지 확인합니다.
RFC 7230 - HTTP/1.1: 메시지 구문과 라우팅
RFC 7231 - HTTP/1.1: 의미와 내용
RFC 7232 - HTTP/1.1: 조건부 요청
RFC 7233 - HTTP/1.1: 범위 요청
RFC 7234 - HTTP/1.1: 캐싱
RFC 7235 - HTTP/1.1: 인증

2. 응답 헤더의 구문이 올바른지 확인합니다. Content-Type:text와 같이 키와 값으로 이루어져야 합니다. HTTP 응답 헤더에 Content-Length 또는 전송 인코딩이 누락되지 않았는지 확인합니다. 웹 서버 HTTP 헤더 필드에 대한 자세한 내용은 HTTP 헤더 필드 목록을 참조하십시오. 명령을 실행한 결과로 반환된 HTTP 응답이 다음과 유사한지 확인합니다.

curl -vko /dev/null server_instance_IP

3. ELB 액세스 로그에서 중복된 HTTP 502 오류가 없는지 확인합니다. elb_status_code 및 backend_status_code에 대한 502 오류는 하나 이상의 웹 서버 인스턴스에 문제가 있음을 나타냅니다. 어느 웹 서버 인스턴스에서 문제가 발생하는지 찾은 다음 백엔드 웹 서버 인스턴스의 웹 서버 로그를 확인합니다. 몇 가지 일반적인 웹 서버 및 운영 시스템의 다음 로그 위치를 참조하십시오.

Apache 로그

  • CentOS, RHEL, Fedora 및 Amazon Linux의 웹 서버 로그는 /var/log/httpd/ directory에 있습니다.
  • Debian 및 Ubuntu Linux는 /var/log/apache2 및 /var/log/lighthttpd/ 디렉터리에 있습니다.

Nginx 로그

  • nginx 액세스 로그 위치는 nginx.conf 파일에 정의되어 있으며 access_log /path/to/access.log입니다.
  • 기본 위치는 /var/log/nginx/access.log입니다.

IIS 로그

Windows IIS 7, IIS 7.5 및 IIS 8.0의 웹 서버 로그는 inetpub\logs\Logfiles 디렉터리에 저장되어 있습니다. Internet Information Server(IIS) 로그에 대한 자세한 내용은 IIS 7.0, IIS 7.5 및 IIS 8.0의 HTTP 상태 코드를 참조하십시오. 502 오류가 ELB에서 생성되었고 백엔드의 응답이 RFC 규약에 부합하는 것으로 확인될 경우 AWS Support에 문의하십시오.


페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시된 날짜: 2016년 9월 9일

업데이트된 날짜: 2018년 4월 10일