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 Unavailablez 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.ProxyTunnelCreationFailedi- target, 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.ProxyTunnelCreationFailedw konkretnym okresie (jeśli w przeszłości) lub jeśli jakieś żądania nadal kończą się niepowodzeniem503
- Jeśli znajdziesz błędy - 503z kodem błędu X-Apigee-fault-code która pasuje do wartości- protocol.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 Unavailableprzy 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 faultstringjako 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 faultstringzawieraProxy 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 - tcpdumpna 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 - tcpdumpznajdziesz 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 szczegółowo zapoznaj się z jego treścią 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.orgkoń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.urina „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.propertiesna 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