Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Krótki opis problemu
Aplikacja kliencka otrzymuje kod stanu HTTP 503 Service Unavailable
z parametrem
kod błędu protocol.http.ProxyTunnelCreationFailed
jako odpowiedź na wywołania interfejsu API.
Komunikat o błędzie
Aplikacja kliencka otrzymuje ten kod odpowiedzi:
HTTP/1.1 503 Service Unavailable
Możesz też zobaczyć następujący komunikat o błędzie:
{ "fault":{ "faultstring":"Proxy refused to create tunnel with response status 403", "detail":{ "errorcode":"protocol.http.ProxyTunnelCreationFailed" } } }
Przekieruj serwer proxy i tunelowanie
Apigee Edge zezwala serwerom proxy interfejsu API na komunikację z serwerem backendu przez serwer proxy
zgodnie z opisem na stronie
Skonfiguruj serwer proxy przekierowania. Serwer proxy otwiera bezpieczny (HTTPS) lub niezabezpieczone
(HTTP) z serwerem backendu w zależności od typu serwera proxy
przez usługę HTTPClient.proxy.type
) i przesyła dane,
w obu kierunkach. Jest to tzw. tunelowanie.
Domyślnie Apigee Edge używa tunelowania dla całego ruchu. Aby wyłączyć tunelowanie, właściwość
Pole HTTPClient.use.tunneling
musi mieć wartość false
.
Kod błędu: Protocol.http.ProxyTunnelCreationFailed
Apigee Edge zwraca kod błędu protocol.http.ProxyTunnelCreationFailed
, jeśli
Serwer proxy nie może utworzyć tunelu między Apigee Edge a serwerem backendu z powodu
problemy takie jak zapora sieciowa, ograniczenia ACL (listy kontroli dostępu), problemy z systemem DNS, serwer backendu
niedostępność, przekroczenie limitu czasu itp.
Zwykle kod stanu w faultstring
odpowiedzi z Apigee Edge
wskazuje ogólną możliwą przyczynę tego błędu.
Szablon błędu:
Proxy refused to create tunnel with response status STATUS_CODE
Możliwe przyczyny niektórych kodów stanu zaobserwowanych w ciągu błędów:
W poniższej tabeli opisano możliwe przyczyny w zależności od kodu stanu wskazanego w
faultstring
:
Ciąg złamania | Opis |
---|---|
Serwer proxy odmówił utworzenia tunelu ze stanem odpowiedzi 403 |
Może to być spowodowane ograniczeniami zapory sieciowej lub list kontroli dostępu skonfigurowanymi w serwer backendu, który uniemożliwia utworzenie tunelu. |
Serwer proxy odmówił utworzenia tunelu ze stanem odpowiedzi 503 |
Może to być spowodowane problemami z DNS, ograniczeniami zapory sieciowej, niedostępność, która uniemożliwia utworzenie tunelu |
Serwer proxy odmówił utworzenia tunelu ze stanem odpowiedzi 504 |
Może się tak zdarzyć, jeśli podczas tworzenia tunelu przekroczą czas oczekiwania |
W zależności od kodu stanu zaobserwowanego w faultstring
musisz użyć
za pomocą odpowiednich metod, aby rozwiązać problem. Z tego poradnika dowiesz się, jak rozwiązać problemy
problem, jeśli w tabeli faultstring
widzisz kod stanu 403
dla kodu błędu protocol.http.ProxyTunnelCreationFailed
.
Możliwe przyczyny
Ten błąd (kod stanu 403
) występuje, jeśli istnieje zapora sieciowa lub lista kontroli dostępu (ACL)
listy kontrolnej) skonfigurowanych na serwerze backendu, które uniemożliwiają uruchomienie tunelu
utworzona między Apigee Edge a serwerem backendu przez serwer proxy.
Przyczyna | Opis | Instrukcje rozwiązywania problemów dotyczące |
---|---|---|
Serwer proxy odmówił utworzenia tunelu ze stanem odpowiedzi 403 | Serwer proxy odmawia utworzenia tunelu, ponieważ otrzymuje nazwę hosta serwera proxy
zamiast nazwy hosta serwera backendu w nagłówku Host . |
Tylko użytkownicy Edge Private Cloud |
Typowe kroki diagnostyki
Użyj jednego z tych narzędzi lub metod, aby zdiagnozować ten błąd:
Narzędzie śledzenia
Aby zdiagnozować błąd za pomocą narzędzia śledzenia:
- Włącz sesję śledzenia oraz
albo:
- poczekaj, aż wystąpi błąd, lub
- Jeśli możesz odtworzyć problem, wykonaj wywołanie interfejsu API, aby odtworzyć problem.
503 Service Unavailable
z grupąProxy refused to create tunnel with response status 403
.
Sprawdź, czy opcja Show all FlowInfos jest włączona:
- Wybierz jedno z nieudanych żądań i sprawdź log czasu.
- Przejdź przez różne fazy śledzenia i znajdź miejsca, w których wystąpił błąd .
Błąd pojawia się zwykle po etapie Rozpoczęto docelowy przepływ żądań jak poniżej:
Uwaga:
błąd:
Proxy refused to create tunnel with response status 403
- Przejdź do fazy AX (zarejestrowane dane Analytics) i kliknij ją.
Przewiń stronę w dół do sekcji Nagłówki odpowiedzi Szczegóły etapu. określ wartości X-Apigee-fault-code i X-Apigee-fault-source jako poniżej:
Zobaczysz wartości X-Apigee-fault-code i X-Apigee-fault-source jako
protocol.http.ProxyTunnelCreationFailed
itarget
, co oznacza, że ten błąd jest spowodowany tym, że tunel serwera proxy nie udało się utworzyć, ponieważ nie otrzymano oczekiwanego nagłówka hosta.Nagłówki odpowiedzi Wartość X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
X-Apigee-fault-source target
NGINX
Aby zdiagnozować błąd przy użyciu logów dostępu NGINX:
- Jeśli jesteś użytkownikiem Private Cloud, możesz używać logów dostępu NGINX do:
Określenie kluczowych informacji o protokole HTTP
503 Service Unavailable
. Sprawdź logi dostępu NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
Gdzie: wartości ORG, ORG i PORT# są zastępowane rzeczywistymi wartościami.
- Wyszukaj błędy (
503
) z kodem błęduprotocol.http.ProxyTunnelCreationFailed
w konkretnym okresie (jeśli w przeszłości) lub jeśli jakieś żądania nadal kończą się niepowodzeniem503
Jeśli znajdziesz błędy
503
z kodem błędu X-Apigee-fault-code która pasuje do wartościprotocol.http.ProxyTunnelCreationFailed
, a następnie określ wartość źródła X-Apigee-fault-source..Przykładowy błąd 503 z dziennika dostępu NGINX:
Powyższy przykładowy wpis z logu dostępu NGINX zawiera następujące wartości dla X- Kod błędu Apigee i X-Apigee-fault-source:
Nagłówki odpowiedzi Wartość X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
X-Apigee-fault-source target
Przyczyna: serwer proxy odmówił utworzenia tunelu ze stanem odpowiedzi 403
Diagnostyka
- Określ kod błędu i źródło błędu dla
503 Service Unavailable
przy użyciu narzędzia Trace Tool lub logów dostępu NGINX, jak opisano w artykule Najczęstsze czynności diagnostyczne. - Zapoznaj się z komunikatem o błędzie i określ kod stanu.
wskazany w
faultstring
jako błąd podczas tworzenia tunelu. - W tym scenariuszu kod stanu to
403
, co oznacza Zabroniony. - Oznacza to, że nie masz wystarczających uprawnień, aby utworzyć tunel. Może to spowodować zwykle występuje w przypadku ograniczeń zapory sieciowej lub listy kontroli dostępu (ACL), które uniemożliwia utworzenie tunelu.
- Sprawdź wszystkie ograniczenia zapory sieciowej i/lub listy kontroli dostępu skonfigurowane na serwerze backendu, może uniemożliwić utworzenie tunelu.
- W zależności od typu zapory sieciowej lub ograniczeń listy kontroli dostępu (ACL) musisz rozwiązać ten problem. w odpowiedni sposób.
Przeanalizujmy przykładowe ograniczenie zapory sieciowej, aby wyjaśnić, jak rozwiązać ten problem. problem:
Scenariusz: ograniczenie zapory sieciowej na serwerze backendu oczekuje, że nagłówek hosta powinien być zawsze zawierają nazwę hosta serwera backendu
Nagłówek hosta przekazywany przez Apigee Edge możesz określić na jeden z tych sposobów:
Śledzenie
Aby określić nagłówek hosta za pomocą śledzenia:
- Upewnij się, że pole
faultstring
zawieraProxy refused to create tunnel with response status 403
, korzystając ze śledzenia, jak wyjaśniliśmy w tym artykule: Najczęstsze czynności diagnostyczne. - Przejdź do etapu Target Request Przepływ uruchomiony i przejrzyj Nagłówki żądań
- Sprawdź wartość nazwy hosta podanej w polu Nagłówek hosta w polu Request Headers (Nagłówki żądań).
- Jeśli nagłówek Host zawiera nazwę hosta proxy, jest to wartość przyczynę tego błędu.
- Dzieje się tak, ponieważ zapora sieciowa jest skonfigurowana na serwerze backendu tak, aby akceptowała dyrektywę żądania tylko wtedy, gdy Nagłówek hosta zawiera nazwę serwera backendu.
- Gdy serwer proxy próbuje utworzyć tunel z serwerem backendu,
kończy się niepowodzeniem i zostaje wyświetlony błąd
Proxy refused to create tunnel with response status 403
.Przykładowy log czasu pokazujący, że nagłówek hosta zawiera nazwę hosta serwera proxy
W przykładowym logu czasu powyżej widać, że Nagłówek hosta zawiera nazwa hosta proxy.
www.proxyserver.com.
Ponieważ ograniczenie zapory sieciowej skonfigurowane na serwerze backendu, które oczekuje wyłącznie nazwa hosta serwera backendu, która ma być zawarta w nagłówku hosta, otrzymasz wartość błądProxy refused to create tunnel with response status 403
.
tcpdump
Aby określić nagłówek hosta za pomocą narzędzia tcpdump
Przechwyć interfejs
tcpdump
na serwerze proxy dla żądań pochodzących z Komponent procesora wiadomości Apigee Edge za pomocą tego polecenia:tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
Więcej informacji o używaniu polecenia
tcpdump
znajdziesz w sekcji tcpdump.- Analizuj dane typu
tcpdump
, korzystając z Wireshark lub podobnego narzędzia. . Oto przykładowa analiza tcpdump za pomocą programu Wireshark:
- Numery 13, 14 i 15 wskazują, że wiadomość Procesor nawiązuje połączenie z serwerem proxy za pomocą trójkierunkowego protokołu TCP procesu uzgadniania połączenia.
- W pakiecie 16 procesor wiadomości połączył się z hostem serwera proxy
httpbin.org
(widoczne w przykładzie powyżej). Wybierz pakiet 16 i dokładnie przeanalizuj jego zawartość oraz zwłaszcza nagłówek hosta przekazywany do serwera proxy przez komponent Message Procesor.
- W przykładzie powyżej widać nagłówek hosta
httpin.org
, który to nazwa hosta serwera proxy. Dlatego gdy serwer proxy próbuje utwórz tunel z serwerem backendu, przekazując powyższy nagłówek hostahttpin.org
kończy się błędemProxy refused to create tunnel with response status 403
.
- Upewnij się, że pole
Rozdzielczość
Scenariusz: ograniczenie zapory sieciowej na serwerze proxy oczekuje, że nagłówek hosta powinien zawsze zawierają nazwę hosta serwera backendu
Jeśli wiesz, że ten błąd jest spowodowany tym, że zapora sieciowa na serwerze backendu skonfigurowano w taki sposób, że element Nagłówek hosta powinien zawsze zawierać serwer backend. podczas gdy procesor wiadomości wysyła nazwę hosta serwera proxy, a następnie wykonaj wykonaj te czynności, by rozwiązać problem:
Ustaw właściwość
use.proxy.host.header.with.target.uri
na „true” w Docelowy punkt końcowy jak w tym przykładzie:Przykładowa konfiguracja docelowego punktu końcowego:
<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>
Upewnij się, że pozostałe właściwości powiązane z zapytaniem proxy przekierowania są skonfigurowane w procesorze wiadomości w ten sposób:
- Sprawdź plik
/opt/apigee/customer/application/message-processor.properties
na każdym z procesorów wiadomości. Upewnij się, że te właściwości są ustawione zgodnie z Twoim przypadkiem użycia lub wymaganiami:
Przykładowe wartości właściwości:
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
- Sprawdź plik
Musi zbierać informacje diagnostyczne
Jeśli po wykonaniu powyższych czynności problem nie ustąpi, zwróć uwagę na informacje diagnostyczne, a następnie skontaktuj się z zespołem pomocy Apigee Edge:
Jeśli jesteś użytkownikiem Private Cloud, podaj te informacje:
- Pełny komunikat o błędzie zaobserwowany dla nieudanych żądań
- Nazwa środowiska
- Pakiet serwerów proxy interfejsu API
- Plik śledzenia żądań do interfejsu API
Logi dostępu NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Gdzie: wartości ORG, ENV i PORT# są zastępowane rzeczywistymi wartościami.
Logi systemowe procesora wiadomości
/opt/apigee/var/log/edge-message-processor/logs/system.log