<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Symptom
Die Clientanwendung ruft den HTTP-Statuscode 502 Bad Gateway
mit dem Fehler ab
Code protocol.http.ResponseWithBody
als Antwort für API-Aufrufe.
Fehlermeldung
Die Clientanwendung ruft den folgenden Antwortcode ab:
HTTP/1.1 502 Bad Gateway
Außerdem sehen Sie möglicherweise eine der folgenden Fehlermeldungen:
{ "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" } } }
Mögliche Ursachen
Dieser Fehler tritt auf, wenn die HTTP-Antwort vom Backend-Server an Apigee Edge entweder
204 No Content
oder 205 Reset Content
, enthält aber die response
body und/oder mindestens einen der folgenden Header:
Content-Length
Content-Encoding
Transfer-Encoding
Gemäß den Spezifikationen
<ph type="x-smartling-placeholder"></ph>
RFC 7231, Abschnitt 6.3.5: 204 No Content und
<ph type="x-smartling-placeholder"></ph>
RFC 7231, Abschnitt 6.3.6: 205 Reset Content, wird erwartet, dass keine zusätzlichen Inhalte
sollte vom Ursprungsserver als Teil des Antwortnutzlasttexts mit dem Statuscode 204 No
Content
oder 205 Reset Content
gesendet werden. Die Antwortheader
wie Content-Length
, Content-Encoding
oder
Transfer-Encoding
geben die Größe, den Typ oder das Format der Antwortnutzlast an.
Daher gibt Apigee Edge einen 502 Bad Gateway
-Statuscode mit
dem Client den Fehlercode protocol.http.ResponseWithBody
unter
Gegebenheiten:
Statuscode vom Backend-Server | ||
---|---|---|
Antwort vom Backend-Server enthält | 204 Kein Inhalt | 205 Inhalte zurücksetzen |
Antworttext | FEHLER | FEHLER |
(auf ungleich null gesetzt) |
FEHLER | FEHLER |
(Festlegen auf <ph type="x-smartling-placeholder"></ph> unterstützte Codierung in Apigee Edge) |
FEHLER | KEIN FEHLER |
Transfer-Encoding |
FEHLER | FEHLER |
<ph type="x-smartling-placeholder"> |
Mögliche Ursachen für diesen Fehler:
Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
---|---|---|
Antworttext oder Header mit 204-Antwort vom Backend-Server | Der Backend-Server sendet eine 204 No Content oder 205 Reset Content
Antwort mit einem Antworttext und/oder einem oder mehreren der Header Content-Type ,
Content-Encoding oder Transfer-Encoding . |
Edge-Nutzer von öffentlichen und privaten Clouds |
Allgemeine Diagnoseschritte
Verwenden Sie eines der folgenden Tools oder Techniken, um diesen Fehler zu diagnostizieren:
API-Monitoring
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mithilfe von API-Monitoring:
- <ph type="x-smartling-placeholder"></ph> Melden Sie sich in der Apigee Edge-Benutzeroberfläche als Nutzer mit einem Rolle.
Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten.
- Wechseln Sie zum Bereich Analysieren > API-Monitoring > Untersuchen.
- Wählen Sie den Zeitraum aus, in dem Sie die Fehler beobachtet haben.
- Stellen Sie den Fehlercode in den Vergleich mit der Zeit ein. <ph type="x-smartling-placeholder">
Wählen Sie eine Zelle mit dem Fehlercode
protocol.http.ResponseWithBody
als (siehe unten):Sie sehen die Informationen zum Fehlercode
protocol.http.ResponseWithBody
, wie unten gezeigt:Klicken Sie auf Logs ansehen und maximieren Sie die Zeile für die fehlgeschlagene Anfrage.
- Im Fenster Logs werden die folgenden Details angezeigt:
<ph type="x-smartling-placeholder">
- </ph>
- Statuscode:
502
- Fehlerquelle:
target
- Fehlercode:
protocol.http.ResponseWithBody
.
- Statuscode:
- Wenn die Fehlerquelle den Wert
target
und den Fehler Code den Wertprotocol.http.ResponseWithBody
hat, dann gibt an, dass der Fehler aufgetreten ist, weil der Back-End-Server eine Statuscode204 No Content
oder205 Reset Content
mit den Antworttext und/oder einen der Header, die im Mögliche Ursachen.
Trace-Tool
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mit dem Trace-Tool:
- Aktivieren Sie die Trace-Sitzung.
und entweder:
<ph type="x-smartling-placeholder">
- </ph>
- Warten Sie, bis der Fehler
502 Bad Gateway
auftritt. oder - Wenn Sie das Problem reproduzieren können, führen Sie den API-Aufruf aus und reproduzieren Sie den Fehler
502 Bad Gateway
.
- Warten Sie, bis der Fehler
Achten Sie darauf, dass Show all FlowInfos (Alle FlowInfos anzeigen) aktiviert ist:
- Wählen Sie eine der fehlgeschlagenen Anfragen aus und prüfen Sie den Trace.
- Verschiedene Phasen des Trace durchgehen und ermitteln, wo der Fehler auftritt aufgetreten.
In der Regel sind Fehler in der
flowinfo
-Fehler nach der Phase Anfrage an Zielserver gesendet an:Szenario 1
Szenario 1: Der Backend-Server antwortet mit dem Statuscode
204 No Content
mit dem Antworttext und/oder einem der in der Tabelle Mögliche Ursachen:Notieren Sie sich die folgenden Werte aus dem Trace:
- Fehler:
Received 204 Response with message body
- error.class::
com.apigee.rest.framework.BadGateway
Szenario 2
Szenario 2: Der Backend-Server antwortet mit einem Statuscode
204 No Content
mit dem Antworttext und/oder einem der Header, die unter Mögliche Ursachen aufgeführt sind.Notieren Sie sich die folgenden Werte aus dem Trace:
- Fehler:
Received 205 Response with message body
- error.class::
com.apigee.rest.framework.BadGateway
- Fehler:
- Navigieren Sie im Trace zur Phase AX (Analytics Data Recorded). und klicken Sie darauf.
Scrollen Sie nach unten zum Abschnitt Phase Details, Error Headers und Bestimmen Sie die Werte von X-Apigee-fault-code und X-Apigee-fault-code. wie unten dargestellt:
- Beachten Sie, dass die Werte von X-Apigee-fault-code und X-Apigee-fault-code
are protocol.http.ResponseWithBody
bzw.target
. Dies weist darauf hin, dass der Fehler aufgetreten ist, weil der Backend-Server eine204 No Content
- oder205 Reset Content
-Statuscode durch den Antworttext und/oder einer der Header, die unter Mögliche Ursachen aufgeführt sind.Fehler Wert X-Apigee-fault-code protocol.http.ResponseWithBody
X-Apigee-fault-source target
NGINX
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mithilfe von NGINX-Zugriffslogs:
- Als Private Cloud-Nutzer können Sie NGINX-Zugriffslogs für folgende Zwecke verwenden:
die wichtigsten Informationen zu HTTP-
502 Bad Gateway
ermitteln. Prüfen Sie die NGINX-Zugriffslogs:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Dabei gilt:ORG, ENV und PORT# werden durch tatsächliche Werte ersetzt.
- Nach
502
-Fehlern mit Fehlercode suchenprotocol.http.ResponseWithBody
während eines bestimmten Zeitraums (wenn das Problem in der Vergangenheit aufgetreten ist) oder wenn immer noch Anfragen mit502
Wenn Sie
502
-Fehler mit dem X-Apigee-fault-code finden dem Wert vonprotocol.http.ResponseWithBody
entsprechen, dann ermitteln Wert von X-Apigee-fault-source.Beispielfehler 502 aus dem NGINX-Zugriffsprotokoll:
Der obige Beispieleintrag aus dem NGINX-Zugriffsprotokoll enthält die folgenden Werte für X- Apigee-Fehlercode und X-Apigee-Fehler-Quelle:
Antwortheader Wert X-Apigee-fault-code protocol.http.ResponseWithBody
X-Apigee-fault-source target
- Beachten Sie, dass die Werte von X-Apigee-fault-code und X-Apigee-fault-code
sind
protocol.http.ResponseWithBody
bzw.target
. Dies weist darauf hin, dass der Fehler aufgetreten ist, weil der Backend-Server eine204 No Content
- oder205 Reset Content
-Statuscode durch den Antworttext und/oder einer der Header, die unter Mögliche Ursachen aufgeführt sind.
Ursache: Antworttext oder Header mit 204-Antwort vom Backend-Server
Diagnose
- Ermitteln Sie den Fehlercode und die Fehlerquelle für den mit der API beobachteten Fehler. Monitoring-, Trace-Tool- oder NGINX-Zugriffslogs wie unter Häufige Diagnoseschritte.
- Wenn der Fehlercode
protocol.http.ResponseWithBody
ist und Fehlerquelle den Werttarget
hat, bedeutet dies, dass das Back-End Der Server hat mit dem Status204 No Content
oder205 Reset Content
geantwortet. mit dem Antworttext und/oder einem der Header in Mögliche Ursachen: Um zu überprüfen, ob der Back-End-Server tatsächlich einen Antwortnutzlasttext und/oder einen Antwortnutzlasttext gesendet hat. oder mehreren der unter Mögliche Ursachen genannten Überschriften, können Sie führen Sie die folgenden Schritte aus:
Wenn Sie Nutzer einer öffentlichen Cloud sind und dieselbe API-Anfrage an den Back-End-Server direkt von einem Ihrer Systeme.
<ph type="x-smartling-placeholder">- Wenn Sie ein Private Cloud-Nutzer sind, können Sie dieselbe API-Anfrage an den Back-End-Server direkt von einem der Message Processor aus, die dem spezifischen Organisation und Umgebung, in der der Fehler beobachtet wird.
Prüfen Sie die vom Back-End-Server erhaltene Antwort und vergewissern Sie sich, dass sie einen Nutzlasttext der Antwort und/oder mindestens einen der oben genannten Header. Wenn ja, ist das die Ursache des Fehlers.
Beispiel 1
Beispiel 1: Antwort 204 des Backend-Servers mit Content-Encoding-Header
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-aliveIn diesem Beispiel hat der Back-End-Server mit
204 No Content
-Statuscode undContent-Encoding: gzip
Beispiel 2
Beispiel 2: Antwort 204 des Backend-Servers mit Content-Length-Header
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-aliveIn diesem Beispiel hat der Back-End-Server mit
204 No Content
-Statuscode undContent-Length: 48
Beispiel 3
Beispiel 3: Antwort 205 des Back-End-Servers mit Antworttext
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
In diesem Beispiel hat der Back-End-Server mit
205 Reset Content
-Statuscode mit AntworttextThis is a sample Response.
- In allen obigen Beispielen hat der Back-End-Server
204 No Content
oder Statuscode205 Reset Content
mit dem Antworttext und/oder einem der Header die unter Mögliche Ursachen aufgeführt sind. - Daher hat Apigee Edge den Statuscode
502 Bad Gateway
mit Fehlercode gesendetprotocol.http.ResponseWithBody
.
Auflösung
Sicherstellen, dass der Backend-Server immer die Spezifikation einhält
<ph type="x-smartling-placeholder"></ph>
RFC 7231, Abschnitt 6.3.6: 205 Reset Content beim Senden der 204 No Content
oder 205 Reset Content
-Antwort auf Apigee Edge. Das heißt, der Back-End-Server
Folgendes DARF NICHT als Teil eines 204 No Content
- oder
Antwort von 205 Reset Content
:
- Antwortnutzlasttext
- und einer der folgenden Überschriften:
<ph type="x-smartling-placeholder">
- </ph>
Content-Length
Content-Encoding
Transfer-Encoding
Spezifikation
Apigee Edge antwortet mit dem Statuscode 502 Bad Gateway
und dem Fehlercode
protocol.http.ResponseWithBody
, wenn der Backend-Server eine
Antwort „204 No Content
“ oder „205 Reset Content
“, aber
nicht den folgenden RFC-Spezifikationen entspricht:
Spezifikation |
---|
<ph type="x-smartling-placeholder"></ph> RFC 7231, Abschnitt 6.3.5: 204 No Content |
<ph type="x-smartling-placeholder"></ph> RFC 7231, Abschnitt 6.3.6: 205 Content zurücksetzen |
Wichtige Punkte
Die empfohlene Lösung besteht darin, den Backend-Server so zu reparieren, dass er 204 No Content
sendet
und den Statuscode 205 Reset Content
ohne Antworttext und
Header: Content-Length
, Content-Encoding
und
Transfer-Encoding
und den Spezifikationen entsprechen
.
RFC 7231, Abschnitt 6.3.5: 204 No Content und
RFC 7231, Abschnitt 6.3.6: 205 Reset Content.
Wenn Sie weitere Unterstützung vom Apigee-Support benötigen, gehen Sie zu Diagnoseinformationen müssen erfasst werden.
Erfassen von Diagnoseinformationen erforderlich
Erfassen Sie die folgenden Diagnoseinformationen und wenden Sie sich an den Apigee Edge-Support:
Wenn Sie ein Public Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Name der Organisation
- Name der Umgebung
- API-Proxy-Name
- Vollständiger
curl
-Befehl zum Reproduzieren des502
-Fehlers - Ablaufverfolgungsdatei für API-Anfragen
Wenn Sie ein Private Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Vollständige Fehlermeldung für fehlgeschlagene Anfragen
- Name der Umgebung
- API-Proxy-Bundle
- Ablaufverfolgungsdatei für API-Anfragen
NGINX-Zugriffslogs
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Wo:ORG, ENV und PORT# werden ersetzt durch tatsächliche Werte.
- Systemprotokolle des Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log