<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
증상
클라이언트 애플리케이션에 오류와 함께 HTTP 상태 코드 502 Bad Gateway
가 표시됩니다.
API 호출에 대한 응답으로 protocol.http.Response405WithoutAllowHeader
코드를 사용하세요.
오류 메시지
클라이언트 애플리케이션은 다음과 같은 응답 코드를 받습니다.
HTTP/1.1 502 Bad Gateway
또한 다음과 같은 오류 메시지가 표시될 수 있습니다.
{ "fault":{ "faultstring":"Received 405 Response without Allow Header", "detail":{ "errorcode":"protocol.http.Response405WithoutAllowHeader" } } }
가능한 원인
이 오류는 백엔드 서버가 405 Method Not Allowed
상태로 응답하는 경우에 발생합니다.
Allow
헤더가 없는 코드
사양에 따라
<ph type="x-smartling-placeholder"></ph>
RFC 7231, 섹션 6.5.5: 405 허용되지 않는 메서드의 경우 원본 서버는
다음을 포함하는 405
응답에서 Allow
헤더 필드를 생성하고 전송해야 합니다(MUST).
대상 리소스의 현재 지원되는 메서드의 목록입니다. 그렇지 않은 경우 Apigee는
502 Bad Gateway
및 오류 코드 protocol.http.Response405WithoutAllowHeader
원인 | 설명 | 다음에 관한 문제 해결 안내 |
---|---|---|
백엔드 서버의 'Allow(허용)' 헤더가 없는 405 응답 | API 요청을 처리하는 백엔드 서버가 Allow 헤더 없이 405 상태 코드로 응답합니다. |
에지 퍼블릭 및 프라이빗 클라우드 사용자 |
일반적인 진단 단계
다음 도구/기술 중 하나를 사용하여 이 오류를 진단합니다.
API 모니터링
<ph type="x-smartling-placeholder">API 모니터링을 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- 다음이 있는 사용자로 Edge UI에 역할을 수행하는 것이 좋습니다.
문제를 조사하려는 조직으로 전환합니다.
- 분석 > API 모니터링 > 조사 페이지를 엽니다.
- 오류가 관찰된 특정 기간을 선택합니다.
시간을 기준으로 결함 코드를 표시합니다.
<ph type="x-smartling-placeholder">오류 코드가 있는 셀을 선택합니다.
protocol.http.Response405WithoutAllowHeader
는 다음과 같습니다.오류 코드
protocol.http.Response405WithoutAllowHeader
관련 정보 다음과 같이 표시됩니다.로그 보기 를 클릭하고 실패한 요청 중 하나를 펼쳐 자세한 정보를 확인합니다.
- 로그 창에서 다음 세부정보를 확인합니다.
<ph type="x-smartling-placeholder">
- </ph>
- 상태 코드:
502
- 오류 소스:
target
- 오류 코드:
protocol.http.Response405WithoutAllowHeader
.
- 상태 코드:
- 결함 소스가
target
이고 결함 코드가 다음과 같은 경우protocol.http.Response405WithoutAllowHeader
이면 백엔드가 서버가405 Method Not Allowed
상태 코드로 응답했는데Allow
헤더
추적 도구
<ph type="x-smartling-placeholder">Trace 도구를 사용하여 오류를 진단하는 방법은 다음과 같습니다.
- 사용 설정
trace 세션 및
<ph type="x-smartling-placeholder">
- </ph>
502 Bad Gateway
오류가 발생할 때까지 기다립니다.- 문제를 재현할 수 있는 경우 API 호출을 수행하여 문제를 재현합니다.
오류
502 Bad Gateway
개
모든 FlowInfos 표시가 사용 설정되어 있는지 확인합니다.
- 실패한 요청 중 하나를 선택하고 trace를 검토합니다.
- 추적의 여러 단계를 살펴보고 오류가 발생한 위치를 찾습니다.
오류는 일반적으로 대상 서버로 요청 전송 이후의 흐름에서 찾을 수 있습니다. 단계를 실행할 수 있습니다.
트레이스에서 오류 값을 확인합니다.
위의 샘플 트레이스에서는 오류를
Received 405 Response without Allow Header
로 보여줍니다. 요청이 백엔드로 전송된 후 Apigee에서 오류가 발생하므로 백엔드 서버가405
응답 상태 코드를 전송했음을 나타냅니다. (Allow
헤더 없이)- 트레이스의 AX (애널리틱스 데이터 기록됨) 단계로 이동하여 클릭합니다.
단계 세부정보의 오류 / 응답 헤더 섹션까지 아래로 스크롤합니다. 새 포드가 X-Apigee-fault-code 및 X-Apigee-fault-source 값이 아래와 같이 표시됩니다.
- X-Apigee-fault-code와 X-Apigee-fault-source의 값이 다음과 같이 표시됩니다.
각각
protocol.http.Response405WithoutAllowHeader
및target
이는 백엔드가Allow
헤더가 없는405
응답 상태 코드응답 헤더 값 X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source target
NGINX
<ph type="x-smartling-placeholder">NGINX 액세스 로그를 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- Private Cloud 사용자인 경우 NGINX 액세스 로그를 사용하여
HTTP
502
오류에 대한 주요 정보 NGINX 액세스 로그를 확인합니다.
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
위치: ORG, ORG, PORT#는 실제 값으로 대체됩니다.
- 오류 코드와 함께
502
오류가 있는지 검색하여 확인합니다. 특정 기간 동안protocol.http.Response405WithoutAllowHeader
( 또는 여전히 실패하고 있는 요청이 있는지502
다음과 일치하는 X-Apigee-fault-code 가
502
오류인 경우protocol.http.Response405WithoutAllowHeader
값으로 설정하여 X-Apigee-fault-source.가 필요합니다.NGINX 액세스 로그의 샘플 502 오류:
NGINX 액세스 로그의 위 샘플 항목에는 X-Apigee- fault-code 및 X-Apigee-fault-source:
응답 헤더 값 X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source target
원인: 백엔드 서버의 Allow 헤더가 없는 405 응답
진단
502 Bad Gateway
의 결함 코드와 결함 소스를 결정합니다. API 모니터링, Trace Tool 또는 NGINX 액세스 로그를 사용하여 일반적인 진단 단계.- 결함 코드가
protocol.http.Response405WithoutAllowHeader
이고 오류 소스의 값이target
이면 백엔드 서버에Allow
헤더가 없는405
상태 코드로 응답했습니다. 따라서 Apigee가 오류 코드로502 Bad Gateway
로 응답합니다.protocol.http.Response405WithoutAllowHeader
해상도
다음 방법 중 하나를 사용하여 문제를 해결하세요.
백엔드 서버
옵션 #1: 'Allow(허용)' 헤더와 함께 405 상태 코드를 전송하도록 백엔드 서버를 수정합니다.
<ph type="x-smartling-placeholder">백엔드 서버가 항상 사양을 준수하는지 확인 <ph type="x-smartling-placeholder"></ph> RFC 7231, 섹션 6.5.5: 405 허용되지 않는 메서드를 수신 대기하고
405
상태로 전송합니다.Allow
헤더의 일부로 허용되는 메서드 목록을 포함하여 코드를 작성합니다. 다음과 같습니다.Allow: HTTP_METHODS
- 예를 들어 백엔드 서버가
GET
,POST
,HEAD
메서드가 있는 경우Allow
헤더에 다음과 같습니다.Allow: GET, POST, HEAD
오류 처리
옵션 2: 오류 처리를 사용하여 API의 Allow 헤더와 함께 405 상태 코드 전송 프록시:
<ph type="x-smartling-placeholder">
백엔드 서버가 Allow
없이 405
상태 코드를 반환하는 경우
헤더에 있는 경우 오류 처리를 사용하여 405
상태 코드와
Allow
헤더를 다음과 같이 바꿉니다.
다음과 같은 정책을 만듭니다. AssignMessage 정책 또는 RaiseFault 정책 를 설정하고 상태 코드를
405
헤더와Allow
메시지가 표시됩니다.Allow 헤더와 함께 405를 전송하는 샘플 AssignMessage 정책:
<AssignMessage async="false" continueOnError="false" enabled="true" name="AM-405WithAllowHeader"> <DisplayName>AM-405WithAllowHeader</DisplayName> <Set> <Payload contentType="application/json">{"Specified method is not allowed. Please use one of the methods mentioned in the Allow header."}</Payload> <StatusCode>405</StatusCode> <ReasonPhrase>Method Not Allowed</ReasonPhrase> </Set> <Add> <Headers> <Header name="Allow">GET, POST, HEAD</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
TargetEndpoint
에 정책을 호출하는FaultRule
를 만듭니다. 오류 코드와 함께502
오류가 표시될 때protocol.http.Response405WithoutAllowHeader
입니다.faultRule을 보여주는 샘플 TargetEndpoint 구성:
<TargetEndpoint name="default"> ... <FaultRules> <FaultRule name="405WithoutAllowHeader"> <Step> <Name>AM-405WithAllowHeader</Name> </Step> <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition> </FaultRule> </FaultRules>
- API 프록시의 새 버전에 이러한 변경사항을 저장하고 버전을 배포합니다.
- API를 호출하고 다음과 함께
405
상태 코드가 수신되는지 확인합니다.Allow
헤더.
속성 구성
옵션 3: 메시지 프로세서의 속성을 구성하여 Apigee Edge가 502 오류 반환
- Private Cloud 사용자인 경우 속성을 업데이트할 수 있습니다.
HTTP.ignore.allow_header.for.405
에서true
로 설정하여 Apigee Edge가 백엔드 서버가405
로 응답하더라도502
오류 발생 다음과 같이 안내 가이드를 사용하여Allow
헤더가 없는 상태 코드를 확인합니다. 메시지 프로세서에서 405 속성의 무시 허용 헤더를 구성하는 중입니다. - 퍼블릭 클라우드 사용자 인 경우 Apigee Edge 지원팀에 문의하세요.
사양
Apigee는 백엔드 서버로부터 405 Method Not Allowed
응답을 예상합니다.
다음 사양에 따라 Allow
헤더로 바꿉니다.
사양 | |
---|---|
<ph type="x-smartling-placeholder"></ph> RFC 7231, 섹션 6.5.5: 405 허용되지 않는 메서드 | |
<ph type="x-smartling-placeholder"></ph> RFC 7231, 섹션 7.4.1: 허용 |
중요사항
권장되는 해결 방법은 405
상태 코드를 전송하도록 백엔드 서버를 수정하는 것입니다.
Allow
헤더로 설정하고 사양을 준수합니다.
<ph type="x-smartling-placeholder"></ph>
RFC 7231, 섹션 6.5.5: 405 허용되지 않는 메서드.
Apigee 지원팀의 도움이 더 필요하면 로 이동하세요. 진단 정보를 수집해야 합니다.
진단 정보 수집 필요
위의 안내를 따른 후에도 문제가 지속되면 다음을 수집합니다. Apigee Edge 지원팀에 문의하세요.
퍼블릭 클라우드 사용자인 경우 다음 정보를 입력합니다.
- 조직 이름
- 환경 이름
- API 프록시 이름
- 다음을 사용하여
502 Bad Gateway
를 재현하는 데 사용되는curl
명령어를 완료합니다. 오류 코드protocol.http.Response405WithoutAllowHeader
- API 요청에 대한 추적 파일
Private Cloud 사용자인 경우 다음 정보를 입력합니다.
- 실패한 요청에 대해 발견된 전체 오류 메시지
- 환경 이름
- API 프록시 번들
- API 요청에 대한 추적 파일
NGINX 액세스 로그
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
위치: ORG, ORG, PORT#는 실제 값으로 대체됩니다.
- 메시지 프로세서 시스템 로그
/opt/apigee/var/log/edge-message-processor/logs/system.log