<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Symptom
Die Clientanwendung erhält den HTTP-Statuscode 503 Service Unavailable
mit dem
Fehlercode protocol.http.ProxyTunnelCreationFailed
als Antwort für API-Aufrufe.
Fehlermeldung
Die Clientanwendung ruft den folgenden Antwortcode ab:
HTTP/1.1 503 Service Unavailable
Außerdem wird möglicherweise die folgende Fehlermeldung angezeigt:
{ "fault":{ "faultstring":"Proxy refused to create tunnel with response status 403", "detail":{ "errorcode":"protocol.http.ProxyTunnelCreationFailed" } } }
Forward-Proxy und Tunneling
Apigee Edge ermöglicht Ihren API-Proxys die Kommunikation mit Ihrem Backend-Server über einen Proxy
wie im Artikel
<ph type="x-smartling-placeholder"></ph>
Konfigurieren Sie den Weiterleitungsproxy. Der Proxyserver öffnet eine sichere (HTTPS) oder eine nicht sichere
HTTP-Verbindung zum Back-End-Server abhängig vom Proxytyp (angegebener Wert)
von der Property HTTPClient.proxy.type
) verwendet und überträgt die Daten.
in beide Richtungen. Dies wird als Tunneling bezeichnet.
Standardmäßig verwendet Apigee Edge Tunneling für den gesamten Traffic. Zum Deaktivieren des Tunnelings
HTTPClient.use.tunneling
muss auf false
festgelegt werden.
Fehlercode: Protocol.http.ProxyTunnelCreationFailed
Apigee Edge gibt den Fehlercode protocol.http.ProxyTunnelCreationFailed
zurück, wenn die
Proxyserver kann aus folgenden Gründen keinen Tunnel zwischen Apigee Edge und dem Backend-Server erstellen
Probleme wie Firewall, ACL-Einschränkungen (Access Control List), DNS-Probleme, Backend-Server
Nichtverfügbarkeit, Zeitüberschreitungen usw.
Der Statuscode im faultstring
der Antwort von Apigee Edge ist normalerweise
zeigt eine mögliche übergeordnete Ursache an, die zu diesem Fehler geführt hat.
Vorlage für Fehlerstrings:
Proxy refused to create tunnel with response status STATUS_CODE
Mögliche Ursachen für einen Teil des Statuscodes im Fehlerstring:
Die folgende Tabelle beschreibt mögliche Ursachen abhängig vom Statuscode, der im
faultstring
:
Fehlerstring | Beschreibung |
---|---|
Proxy konnte keinen Tunnel mit dem Antwortstatus „403 “ erstellen |
Dies kann durch Firewall- oder ACL-Einschränkungen verursacht werden, die im Backend-Server, der die Tunnelerstellung verhindert. |
Proxy konnte keinen Tunnel mit dem Antwortstatus „503 “ erstellen |
Dies kann durch DNS-Probleme, Firewall-Einschränkungen, Nichtverfügbarkeit, die das Erstellen des Tunnels verhindert |
Proxy konnte keinen Tunnel mit Antwortstatus 504 erstellen |
Dies kann passieren, wenn bei der Tunnelerstellung Zeitüberschreitungen auftreten. |
Abhängig vom Statuscode, der in faultstring
angezeigt wird, müssen Sie
geeignete Techniken zur
Behebung des Problems anwenden. In diesem Playbook wird erläutert, wie Sie
das Problem, wenn der Statuscode 403
in der faultstring
für den Fehlercode protocol.http.ProxyTunnelCreationFailed
.
Mögliche Ursachen
Dieser Fehler (Statuscode 403
) tritt auf, wenn eine Firewall oder ACL (Zugriffsrechte) vorhanden ist
Kontrollliste) auf dem Backend-Server konfigurierte Einschränkungen, die verhindern,
vom Proxyserver zwischen Apigee Edge und dem Backend-Server erstellt wird.
Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
---|---|---|
Proxy konnte keinen Tunnel mit Antwortstatus 403 erstellen | Der Proxyserver weigert sich, den Tunnel zu erstellen, da er den Hostnamen des Proxyservers empfängt
anstelle des Hostnamens des Back-End-Servers im Host -Header. |
Nur Edge Private Cloud-Nutzer |
Allgemeine Diagnoseschritte
Verwenden Sie eines der folgenden Tools oder Techniken, um diesen Fehler zu diagnostizieren:
Trace-Tool
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 auftritt, oder
- Wenn Sie das Problem reproduzieren können, führen Sie den API-Aufruf aus, um es zu reproduzieren.
503 Service Unavailable
mitProxy refused to create tunnel with response status 403
.
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.
Der Fehler wird normalerweise nach der Phase Zielanfragefluss gestartet angezeigt. wie unten dargestellt:
Beachten Sie die folgenden Informationen:
Fehler:
Proxy refused to create tunnel with response status 403
- Navigieren Sie im Trace zur Phase AX (Analytics Data Recorded) und klicken Sie darauf.
Scrollen Sie nach unten zum Abschnitt Phase Details Response Headers (Antwortheader) und Ermitteln Sie die Werte von X-Apigee-fault-code und X-Apigee-fault-code als (siehe unten):
Sie sehen die Werte X-Apigee-fault-code und X-Apigee-Fehlerquelle. als
protocol.http.ProxyTunnelCreationFailed
bzw.target
. Dies ist ein Hinweis darauf, dass dieser Fehler verursacht wird, weil der Proxy-Tunnel Die Erstellung ist fehlgeschlagen, da der erwartete Host-Header nicht empfangen wurde.Antwortheader Wert X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
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
503 Service Unavailable
bestimmen Fehler. Prüfen Sie die NGINX-Zugriffslogs:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
Dabei gilt:ORG, ORG und PORT# werden durch tatsächliche Werte ersetzt.
- Nach
503
-Fehlern mit Fehlercode suchenprotocol.http.ProxyTunnelCreationFailed
während eines bestimmten Zeitraums (wenn der in der Vergangenheit aufgetreten ist) oder wenn immer noch Anfragen mit503
Wenn Sie
503
-Fehler mit dem X-Apigee-Fehlercode finden die dem Wert vonprotocol.http.ProxyTunnelCreationFailed
entsprechen, Bestimmen Sie dann den Wert von X-Apigee-fault-source..Beispielfehler 503 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.ProxyTunnelCreationFailed
X-Apigee-fault-source target
Ursache: Proxy konnte keinen Tunnel mit dem Antwortstatus 403 erstellen
<ph type="x-smartling-placeholder">Diagnose
- Ermitteln Sie den Fehlercode und die Fehlerquelle für
503 Service Unavailable
mithilfe des Trace-Tools oder von NGINX-Zugriffslogs, wie unter Häufige Diagnoseschritte. - Prüfen Sie die Fehlermeldung und ermitteln Sie den Statuscode.
in der
faultstring
für einen Fehler bei der Tunnelerstellung angegeben ist. - In diesem Szenario lautet der Statuscode
403
, was Verboten bedeutet. - Dies bedeutet, dass nicht genügend Rechte oder Berechtigungen zum Erstellen des Tunnels vorhanden sind. Dies könnte treten in der Regel auf, wenn Firewall- oder ACL-Einschränkungen (Access Control List) vorliegen, verhindern die Erstellung des Tunnels.
- Überprüfen Sie alle auf Ihrem Backend-Server konfigurierten Firewall- und/oder ACL-Einschränkungen, die kann die Erstellung des Tunnels verhindern.
- Je nach Art der Firewall und/oder ACL-Einschränkungen müssen Sie das Problem beheben. angemessen.
Sehen wir uns ein Beispiel für eine Firewalleinschränkung an, um zu erklären, wie Sie dieses Problem beheben können. Problem:
Szenario: Die Firewalleinschränkung auf dem Back-End-Server erwartet, dass der Hostheader immer erfolgen sollte Backend-Server-Hostnamen enthalten
Sie können eine der folgenden Möglichkeiten verwenden, um den von Apigee Edge übergebenen Host-Header zu ermitteln:
Trace
So ermitteln Sie den Host-Header mithilfe von Trace:
- Prüfen Sie, ob die
faultstring
Proxy refused to create tunnel with response status 403
enthält. Verwenden Sie dazu Trace, wie unter Häufige Diagnoseschritte. - Gehen Sie zur Phase Target Request Flow Started (Zielanfragefluss gestartet) und überprüfen Sie die Anfrageheader
- Prüfen Sie den Wert des Hostnamens, der im Host-Header in der Anfrageheader.
- Wenn der Host-Header den Proxy-Hostnamen enthält, ist dies der Ursache des Fehlers.
- Dies liegt daran, dass die Firewall auf dem Back-End-Server so konfiguriert ist, dass sie den wird nur dann angefragt, wenn der Host-Header den Namen des Back-End-Servers enthält.
- Wenn der Proxyserver versucht, den Tunnel mit dem Back-End-Server zu erstellen,
schlägt mit dem Fehler fehl
Proxy refused to create tunnel with response status 403
.Beispiel-Trace, das einen Hostheader mit einem Proxy-Hostnamen zeigt
Im oben gezeigten Beispiel-Trace ist zu sehen, dass der Host Header den Namen des Proxy-Hosts.
www.proxyserver.com.
Da eine eine auf dem Back-End-Server konfigurierte Firewalleinschränkung, die nur die der im Host Header enthalten sein muss, erhalten Sie den FehlerProxy refused to create tunnel with response status 403
.
tcpdump
So ermitteln Sie den Host-Header mithilfe von „tcpdump“:
tcpdump
auf dem Proxyserver für die Anfragen von die Message Processor-Komponente von Apigee Edge mit dem folgenden Befehl:tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
Weitere Informationen zur Verwendung des Befehls
tcpdump
finden Sie unter <ph type="x-smartling-placeholder"></ph> tcpdump.- Analysieren Sie die
tcpdump
-Daten mithilfe des Wireshark-Tool oder ähnliches . Hier ist eine Beispielanalyse <ph type="x-smartling-placeholder"></ph> tcpdump mit Wireshark:
- Die Paketnummern 13, 14 und 15 zeigen an, dass die Nachricht Prozessor stellt Verbindung zum Proxyserver über ein Drei-Wege-TCP her Handshake-Vorgang ein.
- In Paket 16 hat der Message Processor eine Verbindung zum Proxyhost hergestellt
httpbin.org
(siehe Beispiel oben). Wählen Sie Paket 16 aus und prüfen Sie den Inhalt des Pakets im Detail. Dabei handelt es sich um den Host-Header, der von der Nachricht an den Proxyserver übergeben wird. Prozessor.
- Im obigen Beispiel sehen Sie den Host Header
httpin.org
, der ist der Hostname des Proxy-Servers. Wenn der Proxyserver versucht, Erstellen Sie den Tunnel mit dem Backend-Server, indem Sie den obigen Host-Header übergeben.httpin.org
schlägt sie mit dem FehlerProxy refused to create tunnel with response status 403
fehl.
- Prüfen Sie, ob die
Auflösung
Szenario: Die Firewalleinschränkung auf dem Proxyserver erwartet, dass der Hostheader Hostname des Backend-Servers immer enthalten
Wenn Sie festgestellt haben, dass dieser Fehler verursacht wird, weil die Firewall auf dem Backend-Server so konfiguriert ist, dass erwartet wird, dass der Host-Header immer einen backend-Server enthalten sollte und der Message Processor den Hostnamen des Proxyservers sendet, führen Sie die folgenden Schritte, um das Problem zu beheben:
Legen Sie das Attribut
use.proxy.host.header.with.target.uri
im TargetEndpoint, wie im folgenden Beispiel gezeigt:TargetEndpoint-Beispielkonfiguration:
<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>https://mocktarget.apigee.net/json</URL> <Properties> <Property name="use.proxy.host.header.with.target.uri">true</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>
<ph type="x-smartling-placeholder">Achten Sie darauf, dass die anderen Unterkünfte, die sich auf <ph type="x-smartling-placeholder"></ph> Weiterleitungs-Proxy werden im Message Processor so konfiguriert:
- Überprüfen Sie die Datei
/opt/apigee/customer/application/message-processor.properties
auf jedem Message Processor. Die folgenden Attribute müssen gemäß Ihrem Anwendungsfall oder Ihren Anforderungen festgelegt sein:
Beispielwerte für Attribute:
conf_http_HTTPClient.use.proxy=true conf/http.properties+HTTPClient.proxy.type=HTTP conf/http.properties+HTTPClient.proxy.host=PROXY_SERVER_HOST_NAME conf/http.properties+HTTPClient.proxy.port=PORT_# conf/http.properties+HTTPClient.proxy.user=USERNAME conf/http.properties+HTTPClient.proxy.password=PASSWORD
<ph type="x-smartling-placeholder">
- Überprüfen Sie die Datei
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem trotz Befolgung der obigen Anleitung weiterhin besteht, stellen Sie Folgendes zusammen: Diagnoseinformationen und wenden Sie sich dann an den Apigee Edge-Support:
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
Dabei gilt:ORG, ENV und PORT# werden durch tatsächliche Werte ersetzt.
Systemprotokolle für Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log
Verweise
- <ph type="x-smartling-placeholder"></ph> Weiterleitungsproxy konfigurieren
- <ph type="x-smartling-placeholder"></ph> SSL-Tunneling