<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
증상
클라이언트 애플리케이션에 오류와 함께 HTTP 상태 코드 502 Bad Gateway가 표시됩니다.
API 호출에 대한 응답으로 protocol.http.ResponseWithBody 코드를 사용하세요.
오류 메시지
클라이언트 애플리케이션은 다음과 같은 응답 코드를 받습니다.
HTTP/1.1 502 Bad Gateway
또한 다음 오류 메시지 중 하나가 표시될 수 있습니다.
{
"fault":{
"faultstring":"Received 204 Response with message body",
"detail":{
"errorcode":"protocol.http.ResponseWithBody"
}
}
}{
"fault":{
"faultstring":"Received 205 Response with message body",
"detail":{
"errorcode":"protocol.http.ResponseWithBody"
}
}
}가능한 원인
이 오류는 Apigee Edge에 대한 백엔드 서버의 HTTP 응답이 다음 중 하나인 경우에 발생합니다.
204 No Content 또는 205 Reset Content이지만 응답을 포함합니다.
본문 및/또는 다음 헤더 중 하나 이상을 포함합니다.
Content-LengthContent-EncodingTransfer-Encoding
사양에 따라
<ph type="x-smartling-placeholder"></ph>
RFC 7231, 섹션 6.3.5: 204 No Content,
<ph type="x-smartling-placeholder"></ph>
RFC 7231, 섹션 6.3.6: 205 콘텐츠 재설정을 준수하는 경우 추가 콘텐츠가 없습니다.
원본 서버에서 상태 코드 204 No
Content 또는 205 Reset Content와 함께 응답 페이로드 본문의 일부로 전송해야 합니다. 응답 헤더
Content-Length, Content-Encoding 또는
Transfer-Encoding는 응답 페이로드의 크기, 유형 또는 형식을 나타냅니다.
따라서 Apigee Edge는 다음과 함께 502 Bad Gateway 상태 코드를 반환합니다.
다음 아래 클라이언트에게 오류 코드 protocol.http.ResponseWithBody를 전송합니다.
다음과 같습니다.
| 백엔드 서버의 상태 코드 | ||
|---|---|---|
| 백엔드 서버의 응답에 다음 포함: | 204 콘텐츠 없음 | 205 콘텐츠 재설정 |
| 응답 본문 | 오류 | 오류 |
(0이 아닌 값으로 설정) |
오류 | 오류 |
( <ph type="x-smartling-placeholder"></ph> Apigee Edge에서 지원되는 인코딩) |
오류 | 오류 없음 |
Transfer-Encoding |
오류 | 오류 |
| <ph type="x-smartling-placeholder"> | ||
이 오류가 발생할 수 있는 원인은 다음과 같습니다.
| 원인 | 설명 | 다음에 관한 문제 해결 안내 |
|---|---|---|
| 백엔드 서버의 204 응답이 포함된 응답 본문 또는 헤더 | 백엔드 서버는 204 No Content 또는 205 Reset Content를 전송합니다.
하나 이상의 응답 본문 또는 하나 이상의 Content-Type 헤더가 있는 응답
Content-Encoding 또는 Transfer-Encoding입니다. |
에지 퍼블릭 및 프라이빗 클라우드 사용자 |
일반적인 진단 단계
다음 도구/기술 중 하나를 사용하여 이 오류를 진단합니다.
API 모니터링
<ph type="x-smartling-placeholder">API 모니터링을 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- <ph type="x-smartling-placeholder"></ph> 다음 계정으로 Apigee Edge UI에 로그인: 역할을 수행하는 것이 좋습니다.
문제를 조사하려는 조직으로 전환합니다.
- 분석 > API 모니터링 > 조사 페이지를 엽니다.
- 오류가 관찰된 특정 기간을 선택합니다.
- 시간을 기준으로 결함 코드를 표시합니다. <ph type="x-smartling-placeholder">
오류 코드가
protocol.http.ResponseWithBody인 셀을 선택하세요. 다음과 같습니다.( 더 크게 보기)
오류 코드에 대한 정보가 표시됩니다.
protocol.http.ResponseWithBody는 다음과 같습니다.( 더 크게 보기)
로그 보기를 클릭하고 실패한 요청의 행을 펼칩니다.
( 더 크게 보기)
- 로그 창에서 다음 세부정보를 확인합니다.
<ph type="x-smartling-placeholder">
- </ph>
- 상태 코드:
502 - 오류 소스:
target - 오류 코드:
protocol.http.ResponseWithBody.
- 상태 코드:
- 결함 소스의 값이
target이고 결함 코드의 값이protocol.http.ResponseWithBody이면 는 백엔드 서버가204 No Content또는205 Reset Content상태 코드 응답 본문 및/또는 가능한 원인 섹션을 참조하세요.
추적 도구
<ph type="x-smartling-placeholder">Trace 도구를 사용하여 오류를 진단하는 방법은 다음과 같습니다.
- 추적 세션 사용 설정
그리고 다음 중 한 가지 조건 충족.
<ph type="x-smartling-placeholder">
- </ph>
502 Bad Gateway오류가 발생할 때까지 기다립니다. 또는- 문제를 재현할 수 있으면 API를 호출하고
502 Bad Gateway오류를 재현합니다.
모든 FlowInfos 표시가 사용 설정되어 있는지 확인합니다.
- 실패한 요청 중 하나를 선택하고 trace를 검토합니다.
- 추적의 여러 단계를 살펴보고 장애가 발생한 위치 찾기 수 있습니다.
일반적으로 이 오류는
flowinfo오류에서 확인할 수 있습니다. Request sent to target server(대상 서버로 요청 전송됨) 단계 후 다음과 같이 처리됩니다.시나리오 #1
시나리오 #1: 백엔드 서버가 상태 코드
204 No Content로 응답 포함된 응답 본문 또는 가능한 원인.
트레이스에서 다음 값을 확인합니다.
- 오류:
Received 204 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
시나리오 #2
시나리오 #2: 백엔드 서버가 상태 코드로 응답 응답 본문 및/또는 다음 중 하나를 포함하는
204 No Content가능한 원인에 나열되어 있습니다.
트레이스에서 다음 값을 확인합니다.
- 오류:
Received 205 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
- 오류:
- 트레이스에서 AX (기록된 애널리틱스 데이터) 단계로 이동합니다. 클릭합니다.
아래로 스크롤하여 단계 세부정보, 오류 헤더 섹션으로 이동한 다음 X-Apigee-fault-code 및 X-Apigee-fault-source의 값을 결정합니다. 다음과 같습니다.
( 더 크게 보기)
- X-Apigee-fault-code와 X-Apigee-fault-source의 값은 다음과 같습니다.
각각
are protocol.http.ResponseWithBody및target입니다. 이는 백엔드 서버가204 No Content또는205 Reset Content상태 코드와 응답 본문 또는 가능한 원인에 언급된 헤더 중 하나를 사용하세요.오류 값 X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target
NGINX
<ph type="x-smartling-placeholder">NGINX 액세스 로그를 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- Private Cloud 사용자인 경우 NGINX 액세스 로그를 사용하여
HTTP
502 Bad Gateway에 대한 주요 정보를 결정합니다. NGINX 액세스 로그를 확인합니다.
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log위치: ORG, ENV, PORT#는 실제 값으로 대체됩니다.
- 오류 코드와 함께
502오류가 있는지 검색하여 확인합니다. 특정 기간 동안protocol.http.ResponseWithBody(과거에 문제가 발생한 경우) 또는 여전히502 X-Apigee-fault-code에서
502오류가 발견된 경우protocol.http.ResponseWithBody의 값과 일치하는 경우 X-Apigee-fault-source의 값입니다.NGINX 액세스 로그의 샘플 502 오류:
NGINX 액세스 로그의 위 샘플 항목에는 X- Apigee-fault-code 및 X-Apigee-fault-source:
응답 헤더 값 X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target- X-Apigee-fault-code와 X-Apigee-fault-source의 값은 다음과 같습니다.
은 각각
protocol.http.ResponseWithBody및target입니다. 이는 백엔드 서버가204 No Content또는205 Reset Content상태 코드와 응답 본문 또는 가능한 원인에 언급된 헤더 중 하나를 사용하세요.
원인: 백엔드 서버의 204 응답이 포함된 헤더 또는 응답 본문
진단
- API를 사용하여 관찰된 오류의 결함 코드 및 오류 소스 확인 다음 도움말에 설명된 대로 Monitoring, Trace 도구 또는 NGINX 액세스 로그 일반적인 진단 단계.
- 결함 코드가
protocol.http.ResponseWithBody이고 결함 소스의 값이target이면 백엔드가 서버가204 No Content또는205 Reset Content상태로 응답함 응답 본문 또는 가능한 원인. 백엔드 서버가 실제로 응답 페이로드 본문을 전송했는지 확인 가능한 원인에 나와 있는 헤더 중 하나 이상을 사용하는 경우 다음 단계를 따르세요.
퍼블릭 클라우드 사용자인 경우 직접 백엔드 서버를 구성할 수 있습니다
<ph type="x-smartling-placeholder">- Private Cloud 사용자인 경우 해당 메시지 프로세서 중 하나에서 직접 백엔드 서버를 장애를 관찰하는 조직 및 환경을 보호합니다
백엔드 서버에서 받은 응답을 검토하고 응답 페이로드 본문 및/또는 위에 언급된 헤더 중 하나 이상을 포함합니다. 그렇다면 확인할 수 있습니다
샘플 #1
샘플 #1: 콘텐츠 인코딩 헤더가 있는 백엔드 서버 응답 204
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Encoding: gzip< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-alive이 샘플에서는 백엔드 서버가 상태 코드
204 No Content개 및Content-Encoding: gzip샘플 #2
샘플 #2: 콘텐츠 길이 헤더가 있는 백엔드 서버 응답 204
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Length: 48< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-alive이 샘플에서는 백엔드 서버가 상태 코드
204 No Content개 및Content-Length: 48샘플 #3
샘플 #3: 응답 본문이 있는 백엔드 서버 응답 205
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 205 Reset Content < Date: Sat, 31 Jul 2021 17:14:09 GMT < Content-Length: 12 < Content-Type: text/plain; charset=utf-8 < * Connection #0 to host X.X.X.X left intact
This is a sample Response이 샘플에서는 백엔드 서버가 응답 본문이 있는
205 Reset Content상태 코드This is a sample Response.- 위의 모든 예시에서 백엔드 서버는
204 No Content또는 응답 본문 또는 헤더 중 하나가 있는205 Reset Content상태 코드 가능한 원인에 설명되어 있습니다. - 따라서 Apigee Edge에서 오류 코드와 함께
502 Bad Gateway상태 코드를 전송했습니다.protocol.http.ResponseWithBody입니다.
해상도
백엔드 서버가 항상 사양을 준수하는지 확인
<ph type="x-smartling-placeholder"></ph>
RFC 7231, 섹션 6.3.6: 205 콘텐츠 재설정(204 No Content 전송 시)
또는 Apigee Edge에 대한 205 Reset Content 응답입니다. 즉, 백엔드 서버는
다음을 204 No Content 또는
205 Reset Content 응답:
- 응답 페이로드 본문
- 그리고 다음 헤더 중 하나:
<ph type="x-smartling-placeholder">
- </ph>
Content-LengthContent-EncodingTransfer-Encoding
사양
Apigee Edge가 502 Bad Gateway 상태 코드와 오류 코드로 응답합니다.
protocol.http.ResponseWithBody 백엔드 서버가
204 No Content 또는 205 Reset Content 응답
다음 RFC 사양을 준수하지 않습니다.
| 사양 |
|---|
| <ph type="x-smartling-placeholder"></ph> RFC 7231, 섹션 6.3.5: 204 콘텐츠 없음 |
| <ph type="x-smartling-placeholder"></ph> RFC 7231, 섹션 6.3.6: 205 콘텐츠 재설정 |
중요사항
권장되는 해결 방법은 204 No Content를 전송하도록 백엔드 서버를 수정하는 것입니다.
응답 본문이 없는 205 Reset Content 상태 코드 및
헤더 - Content-Length, Content-Encoding 및
Transfer-Encoding 실행 후 사양을 준수합니다.
RFC 7231, 섹션 6.3.5: 204 No Content,
RFC 7231, 섹션 6.3.6: 205 콘텐츠 재설정.
Apigee 지원팀의 도움이 더 필요하면 다음 페이지로 이동하세요. 진단 정보를 수집해야 합니다.
진단 정보 수집 필요
다음 진단 정보를 수집한 후 Apigee Edge 지원팀에 문의하세요.
퍼블릭 클라우드 사용자인 경우 다음 정보를 입력합니다.
- 조직 이름
- 환경 이름
- API 프록시 이름
502오류를 재현하는 데 사용된curl명령어를 완료합니다.- API 요청에 대한 추적 파일
Private Cloud 사용자인 경우 다음 정보를 입력합니다.
- 실패한 요청에 대해 발견된 전체 오류 메시지
- 환경 이름
- API 프록시 번들
- API 요청에 대한 추적 파일
NGINX 액세스 로그
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log위치: ORG, ENV, PORT#가 다음으로 대체됩니다. 실제값입니다.
- 메시지 프로세서 시스템 로그
/opt/apigee/var/log/edge-message-processor/logs/system.log