<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
증상
클라이언트 애플리케이션이 API의 응답으로 오류 코드 protocol.http.TooBigHeaders
과 함께 HTTP 상태 코드 431 Request Header Fields Too
Large
를 가져옵니다.
있습니다.
오류 메시지
클라이언트 애플리케이션은 다음과 같은 응답 코드를 받습니다.
HTTP/1.1 431 Request Header Fields Too Large
또한 다음과 같은 오류 메시지가 표시될 수 있습니다.
{ "fault":{ "faultstring":"request headers size exceeding 25,600", "detail":{ "errorcode":"protocol.http.TooBigHeaders" } } }<ph type="x-smartling-placeholder">
가능한 원인
이 오류는 클라이언트 애플리케이션이 HTTP 요청의 일부로 포함된 Apigee Edge가 현재 Apigee Edge에서 허용되는 한도 <ph type="x-smartling-placeholder"></ph> RFC 6585, 섹션 5: 431 요청 헤더 필드가 너무 큼
이 오류가 발생할 수 있는 원인은 다음과 같습니다.
원인 | 설명 | 다음에 관한 문제 해결 안내 |
---|---|---|
요청 헤더 크기가 허용된 한도를 초과합니다. | HTTP 요청의 일부로 클라이언트 애플리케이션에서 전송한 Apigee Edge가 Apigee Edge에서 허용되는 한도보다 큽니다. | 에지 퍼블릭 및 프라이빗 클라우드 사용자 |
일반적인 진단 단계
다음 도구/기술 중 하나를 사용하여 이 오류를 진단합니다.
API 모니터링
<ph type="x-smartling-placeholder">API 모니터링을 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- <ph type="x-smartling-placeholder"></ph> 다음 계정으로 Apigee Edge UI에 로그인: 역할을 수행하는 것이 좋습니다.
문제를 조사하려는 조직으로 전환합니다.
- 분석 > API 모니터링 > 조사 페이지를 엽니다.
- 오류가 관찰된 특정 기간을 선택합니다.
- 시간을 기준으로 결함 코드를 표시합니다.
- 오류 코드가
protocol.http.TooBigHeaders
인 셀을 선택합니다. 상태 코드431
( 더 크게 보기)
오류 코드(
protocol.http.TooBigHeaders
)에 관한 정보가 표시됩니다. 다음과 같습니다.( 더 크게 보기)
로그 보기를 클릭하고 실패한 요청의 행을 펼칩니다.
( 더 크게 보기)
로그 창에서 다음 세부정보를 확인합니다.
- 상태 코드:
431
- 오류 소스:
apigee
- 오류 코드:
protocol.http.TooBigHeaders
. - 요청 길이(바이트):
32150 (> 25 KB)
- 상태 코드:
- 결함 소스의 값이
apigee
또는MP
이면 결함 코드의 값은protocol.http.TooBigHeaders
및 요청 길이가 25KB를 초과하면 HTTP 요청의 일부로 클라이언트 애플리케이션이 전송한 모든 요청 헤더가 보다 Apigee에서 허용되는 한도입니다. <ph type="x-smartling-placeholder">
추적 도구
<ph type="x-smartling-placeholder">NGINX
<ph type="x-smartling-placeholder">NGINX 액세스 로그를 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- Private Cloud 사용자인 경우 NGINX 액세스 로그를 사용하여
HTTP
431
오류에 대한 주요 정보를 확인할 수 있습니다. NGINX 액세스 로그를 확인합니다.
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
위치: ORG, ENV, PORT#는 실제 값으로 대체됩니다.
- 특정 기간 동안
431
오류가 있는지 검색합니다. (과거에 문제가 발생한 경우) 또는 여전히431
X-Apigee-fault-code에서
431
오류가 발견된 경우protocol.http.TooBigHeaders
의 값과 일치하는 경우 X-Apigee-fault-source.NGINX 액세스 로그의 위 샘플 항목에는 X-Apigee-fault-code 및 X-Apigee-fault-code
응답 헤더 값 X-Apigee-fault-code protocol.http.TooBigHeaders
X-Apigee-fault-source MP
요청 길이에 유의하세요.
40159
(40KB는 25KB보다 큼, Apigee Edge의 요청 헤더에 허용되는 한도)위의 샘플 로그 항목에서 X-Apigee-fault-source는 다음과 같은 값을 갖습니다.
<ph type="x-smartling-placeholder">apigee
또는MP
이면 X-Apigee-fault-code에 값이 있습니다.protocol.http.TooBigHeaders
및 요청 길이는 40KB 25KB로 제한됩니다. 이것은 HTTP의 일부로 클라이언트 애플리케이션에서 전송한 모든 요청 헤더의 총 크기 요청이 Apigee Edge에서 허용되는 한도인 25KB를 초과했습니다.
원인: 요청 헤더 크기가 허용된 한도를 초과합니다.
진단
- 오류 코드, 오류 소스, 요청 길이 크기를 API 모니터링 또는 NGINX 액세스 로그를 사용할 때 일반적인 진단 단계.
- 결함 소스의 값이
apigee
또는MP
인 경우 결함 코드 의 값은protocol.http.TooBigHeaders
입니다. 요청 길이가 25KB를 초과할 경우 클라이언트 애플리케이션에서 Apigee로 보낸 요청 크기가 Apigee Edge에서 허용되는 한도입니다. - 다음 중 하나를 사용하여 요청 헤더 크기가 허용된 크기인 25KB를 초과했는지 확인할 수 있습니다.
다음 메서드를 참조하세요.
오류 메시지
오류 메시지를 사용하여 유효성을 검사하려면 다음 안내를 따르세요.
Apigee Edge에서 수신된 전체 오류 메시지에 액세스할 수 있는 경우
faultstring
를 참고하세요.faultstring
는 다음을 나타냅니다. 요청 헤더의 총 크기가 허용 한도인 25KB를 초과했습니다.샘플 오류 메시지:
"faultstring":"request headers size exceeding 25,600"
실제 요청
실제 요청을 사용하여 검증하려면 다음 안내를 따르세요.
클라이언트 애플리케이션의 실제 요청에 액세스할 수 있는 경우 그러고 나서 다음 단계를 수행합니다.
- 요청에 전달된 헤더의 크기를 확인합니다.
헤더의 총 크기가 Apigee Edge에서 허용되는 한도: 문제의 원인을 자세히 알아보세요
샘플 요청:
curl -v https://HOSTALIAS/test -H "header0: 000000000000000000……..000000<trimmed>" -H "header1: 111111111111111111……..111111<trimmed>" -H "header2: 222222222222222222……..222222<trimmed>"-H "header3: 333333333333333333……..333333<trimmed>"
위의 경우 헤더의 전체 크기는
header0
,header1
,header2
header3
가 25KB보다 큽니다. 즉, 25K 이상의 ASCII 문자 (바이트)여야 합니다.다른 클라이언트를 사용 중인 경우에는 클라이언트 로그를 검토하고 Apigee Edge로 전송되는 요청 줄의 크기를 확인하세요.
메시지 프로세서 로그
메시지 프로세서 로그를 사용하여 유효성을 검사하려면 다음 단계를 따르세요.
<ph type="x-smartling-placeholder">프라이빗 클라우드 사용자는 메시지 프로세서 로그를 사용하여 요청 헤더 크기가 Apigee Edge에서 허용되는 한도
메시지 프로세서 로그를 확인합니다.
/opt/apigee/var/log/edge-message-processor/logs/system.log
- 특정 기간 동안
431
오류가 있는지 검색하여 확인합니다. 지속 시간 (과거에 문제가 발생한 경우) 또는 여전히431
와 함께 실패합니다. 다음 검색 문자열을 사용할 수 있습니다.grep -ri "exceeding"
grep -ri "RequestHeadersTooLarge"
system.log
에서 다음과 유사한 줄이 표시됩니다.2021-07-27 08:30:28,419 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:GET, uri:/test/, message Id:null, exception:com.apigee.errors.http.user.RequestHeadersTooLarge{ code = protocol.http.TooBigHeaders, message = request headers size exceeding 25,600, associated contexts = []}, context:Context@9c5903 input=ClientInputChannel(SSLClientChannel[Accepted: Remote:192.168.205.251:8443 Local:192.168.67.23:22188]@25130 useCount=1 bytesRead=0 bytesWritten=15367 age=667062ms lastIO=0ms isOpen=true)
message = request headers size exceeding 25,600
는 전체 요청 헤더의 크기가 25KB 따라서 Apigee Edge는 예외를 발생시킵니다.com.apigee.errors.http.user.RequestHeadersTooLarge
및 반품 클라이언트 애플리케이션에 오류 코드가 있는431
상태 코드protocol.http.TooBigHeaders
를 보냅니다.
해상도
<ph type="x-smartling-placeholder">
크기 수정
옵션 #1[권장]: 요청 헤더를 전송하지 않도록 클라이언트 애플리케이션 수정 총 크기가 허용 한도보다 큼
<ph type="x-smartling-placeholder">- 특정 클라이언트가 전체 헤더 크기가 한도.
바람직하지 않은 경우 다음과 같이 클라이언트 애플리케이션을 수정합니다. 허용 한도보다 작은 크기의 요청 헤더입니다.
위에서 설명한 예에서는 긴 헤더를 전달하여 문제를 해결할 수 있습니다. values 매개변수를 요청 본문/페이로드의 일부로 사용할 수 있습니다.
curl -v https://HOSTALIAS/test -d '{ "header0: 000000000000000000……..000000<trimmed>" , "header1: 111111111111111111……..111111<ttrimmed>" , "header2: 222222222222222222……..222222<ttrimmed>", "header3: 333333333333333333……..333333<ttrimmed>" }'
- 허용 한도를 초과하는 헤더를 전송하려면 다음 옵션을 선택합니다.
CwC
옵션 2 : CwC 속성을 사용하여 요청 줄 한도 늘리기
<ph type="x-smartling-placeholder">Apigee는 CwC 속성을 사용하여 요청 줄 크기 제한을 늘릴 수 있습니다. 자세한 내용은 다음을 참고하세요. <ph type="x-smartling-placeholder"></ph> 메시지 프로세서의 요청 줄 제한 설정
<ph type="x-smartling-placeholder">한도
Apigee는 클라이언트 애플리케이션과 백엔드 서버에서 다음 메시지를 보내지 않을 것으로 예상합니다. 문서화된 허용 한도보다 크기가 큰 요청/응답 헤더 의 요청/응답 헤더 크기 제한 Apigee Edge 한도.
- 퍼블릭 클라우드 사용자인 경우 요청 및 응답 헤더 크기는 요청/응답 헤더 크기 Apigee Edge 한도.
- Private Cloud 사용자 의 경우 기본 최댓값을 수정했을 수 있습니다. 요청 및 응답 헤더 크기에 대한 제한을 두는 것이 좋습니다 (권장되는 방법은 아님). 다음 안내를 따라 최대 요청 헤더 크기 제한을 결정할 수 있습니다. 현재 한도를 확인하는 방법
현재 한도를 확인하는 방법
<ph type="x-smartling-placeholder">
이 섹션에서는 HTTPRequest.headers.limit
속성이 다음과 같은지 확인하는 방법을 설명합니다.
메시지 프로세서의 새 값으로 업데이트되었습니다.
- 메시지 프로세서 머신에서 속성
HTTPRequest.headers.limit
/opt/apigee/edge-message-processor/conf
디렉터리에서 다음을 선택합니다. 아래와 같이 설정된 값을 확인할 수 있습니다. <ph type="x-smartling-placeholder">grep -ri "HTTPRequest.headers.limit" /opt/apigee/edge-message-processor/conf
</ph> - 위 명령어의 샘플 결과는 다음과 같습니다.
/opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.headers.limit=25k
위의 출력 예에서
HTTPRequest.headers.limit
속성은http.properties
에서25k
값으로 설정되었습니다.비공개용 Apigee에 구성된 요청 헤더 크기의 한도를 나타냅니다. 클라우드는 25KB입니다.
사양
Apigee Edge는 클라이언트 애플리케이션이
합니다. 요청에 총 크기가 지정된 한도를 초과하는 헤더가 포함된 경우
Apigee에서 다음 RFC에 따라 431 Request Header Fields Too Large
이 발생합니다.
사양:
사양 |
---|
<ph type="x-smartling-placeholder"></ph> RFC 6585, 섹션 5: 431 요청 헤더 필드가 너무 큼 |
Apigee 지원팀의 도움이 더 필요하면 다음 페이지로 이동하세요. 진단 정보를 수집해야 합니다.
진단 정보 수집 필요
다음 진단 정보를 수집한 후 Apigee Edge 지원팀에 문의하세요.
퍼블릭 클라우드 사용자인 경우 다음 정보를 입력합니다.
- 조직 이름
- 환경 이름
- API 프록시 이름
431
오류를 재현하는 데 사용된curl
명령어를 완료합니다.- API 요청에 대한 추적 파일
Private Cloud 사용자인 경우 다음 정보를 입력합니다.
- 실패한 요청에 대해 발견된 전체 오류 메시지
- 조직 이름
- 환경 이름
- API 프록시 번들
- 실패한 API 요청의 추적 파일
431
오류를 재현하는 데 사용된curl
명령어를 완료합니다.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