503 Hizmeti Kullanılamıyor - Proxy tüneli oluşturma işlemi 403 ile başarısız oldu

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

İstemci uygulaması 503 Service Unavailable HTTP durum kodunu hata kodu protocol.http.ProxyTunnelCreationFailed olarak değiştirildi.

Hata mesajı

İstemci uygulaması aşağıdaki yanıt kodunu alır:

HTTP/1.1 503 Service Unavailable

Ayrıca, aşağıdaki hata mesajını da görebilirsiniz:

{
   "fault":{
      "faultstring":"Proxy refused to create tunnel with response status 403",
      "detail":{
         "errorcode":"protocol.http.ProxyTunnelCreationFailed"
      }
   }
}

Proxy ve tünellemeyi yönlendir

Apigee Edge, API proxy'lerinizin proxy üzerinden arka uç sunucunuzla iletişim kurmasını sağlar sunucuya Yönlendirme proxy'sini yapılandırın. Proxy sunucu güvenli (HTTPS) veya güvenli olmayan bir proxy türüne (belirtilen) bağlı olarak arka uç sunucusuna (HTTP) bağlantı HTTPClient.proxy.type) mülkü tarafından kullanılır ve verileri aktarır iki yönlüdür. Bu işlem, tünel oluşturma olarak bilinir.

Apigee Edge varsayılan olarak tüm trafik için tünelleme kullanır. Tünellemeyi devre dışı bırakmak için mülk HTTPClient.use.tunneling politikasının false olarak ayarlanması gerekiyor.

Hata Kodu: Protocol.http.ProxyTunnelCreationFailed

Aşağıdaki durumlarda Apigee Edge, protocol.http.ProxyTunnelCreationFailed hata kodunu döndürür: herhangi bir nedenden dolayı Apigee Edge ile arka uç sunucusu arasında tünel oluşturamaması güvenlik duvarı, EKL (Erişim Kontrol Listesi) kısıtlamaları, DNS sorunları, arka uç sunucusu gibi sorunlar kullanım olmaması, zaman aşımları vb.

Normalde Apigee Edge'den gelen yanıtın faultstring bölümündeki durum kodu bu hataya yol açan olası üst düzey bir nedeni gösterir.

Hatalı dize şablonu:

Proxy refused to create tunnel with response status STATUS_CODE

Fultstring'te gözlemlenen bazı durum kodlarının olası nedenleri:

Aşağıdaki tabloda, faultstring:

Hata dizesi Açıklama
Proxy, 403 yanıt durumuyla tünel oluşturmayı reddetti

403 - Forbidden

Bu durum, arka uç sunucusuyla yürütülebilir.

Proxy, 503 yanıt durumuyla tünel oluşturmayı reddetti

503 - Service Unavailable

Bunun nedeni DNS sorunları, güvenlik duvarı kısıtlamaları, arka uç sunucusunun tünel oluşturulmasını önleyen kullanılamaması

Proxy, 504 yanıt durumuyla tünel oluşturmayı reddetti

504 - Gateway Timeout

Bu durum, tünel oluşturulurken zaman aşımları olduğunda ortaya çıkabilir

faultstring içinde gözlemlenen durum koduna bağlı olarak uygun teknikleri ifade eder. Bu başucu kitabında, sorun giderme faultstring içindeki durum kodunu 403 gözlemlerseniz soruna protocol.http.ProxyTunnelCreationFailed hata kodu için.

Olası nedenler

Bu hata (durum kodu 403), herhangi bir güvenlik duvarı veya EKL (Erişim Kontrol Paneli) varsa ortaya çıkar Kontrol Listesi) için, arka uç sunucusunda tünelin çalışmasını engelleyen kısıtlamalar proxy sunucu tarafından arka uç sunucusu arasında oluşturulan bir e-tablodur.

Neden Açıklama Şunun için geçerli sorun giderme talimatları:
Proxy, yanıt durumu 403 ile tünel oluşturmayı reddetti Proxy sunucu, Proxy sunucu ana makine adını aldığı için tüneli oluşturmayı reddediyor (Host üstbilgisindeki Arka uç sunucu ana makine adının) adını doğrulamaz. Yalnızca Edge Private Cloud kullanıcıları

Sık kullanılan teşhis adımları

Bu hatayı teşhis etmek için aşağıdaki araçlardan/tekniklerden birini kullanın:

İzleme aracı

İzleme aracını kullanarak hatayı teşhis etmek için:

  1. İzleme oturumunu etkinleştirebilir ve şunlardan birini yapın:
    • Hatanın oluşmasını bekleyin veya
    • Sorunu yeniden oluşturabiliyorsanız API çağrısını yaparak sorunu yeniden oluşturun 503 Service Unavailable Proxy refused to create tunnel with response status 403 ile.
  2. Show all FlowInfos (Tüm Akış Bilgilerini Göster) seçeneğinin etkin olduğundan emin olun:

  3. Başarısız isteklerden birini seçin ve izini inceleyin.
  4. İzlemenin farklı aşamalarından yararlanın ve hatanın nerede olduğunu bulun meydana geldi.
  5. Hatayı genellikle Hedef İstek Akışı Başlatıldı aşamasından sonra görürsünüz aşağıdaki gibidir:

    Aşağıdakileri göz önünde bulundurun:

    hata: Proxy refused to create tunnel with response status 403

  6. İzlemedeki AX (Analytics Verilerinin Kaydedilen) Aşamasına gidin ve tıklayın.
  7. Aşama Ayrıntıları'ndaki Yanıt Başlıkları bölümüne ilerleyin ve X-Apigee-fault-code ve X-Apigee-fault-source değerlerini aşağıda gösterilmiştir:

    ( resmi büyüt)

    ( resmi büyüt)

  8. X-Apigee-fault-code ve X-Apigee-fault-source değerlerini görürsünüz. protocol.http.ProxyTunnelCreationFailed ve target olarak görünür. Bu hatanın, bu hatanın proxy tünelinden Beklenen ana makine üstbilgisi alınmadığından oluşturma işlemi başarısız oldu.

    Yanıt Başlıkları Değer
    X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
    X-Apigee-fault-source target

NGINX

NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:

  1. Private Cloud kullanıcısıysanız NGINX erişim günlüklerini kullanarak şunları yapabilirsiniz: HTTP 503 Service Unavailable ile ilgili önemli bilgileri belirler hatalar.
  2. NGINX erişim günlüklerini kontrol edin:

    /opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log

    Konum: ORG, ORG ve PORT# gerçek değerlerle değiştirilir.

  3. Hata kodu içeren 503 hatası olup olmadığını görmek için arama yapın Belirli bir süre boyunca protocol.http.ProxyTunnelCreationFailed ( olup olmadığını kontrol edin) veya hâlâ başarısız olan bir istek varsa 503
  4. X-Apigee-fault-code'da herhangi bir 503 hatası bulursanız protocol.http.ProxyTunnelCreationFailed değeriyle eşleşiyorsa ve X-Apigee-fault-source. değerinin değerini belirleyin.

    NGINX erişim günlüğünden örnek 503 hatası:

    NGINX erişim günlüğünden yukarıdaki örnek giriş, X- Apigee-fault-code ve X-Apigee-fault-source:

    Yanıt Başlıkları Değer
    X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
    X-Apigee-fault-source target

Neden: Proxy, 403 yanıt durumuyla tünel oluşturmayı reddetti

Teşhis

  1. İzleme Aracı veya NGINX erişim günlüklerini kullanarak 503 Service Unavailable için Hata Kodunu ve Hata Kaynağını aşağıda açıklandığı şekilde belirleyin Yaygın teşhis adımları.
  2. Hata Mesajını inceleyin ve durum kodunu belirleyin. tünel oluşturma hatası nedeniyle faultstring içinde belirtilir.
  3. Bu senaryoda, durum kodu 403 şeklindedir. Bu, Yasak anlamına gelir.
  4. Bu, tüneli oluşturmak için yeterli hak veya ayrıcalık olmadığı anlamına gelir. Bu genellikle erişimi kontrol eden herhangi bir güvenlik duvarı veya EKL (Erişim Kontrol Listesi) kısıtlaması varsa kullanılmasını engeller.
  5. Arka uç sunucunuzda yapılandırılmış olan tüm güvenlik duvarı ve/veya EKL kısıtlamalarını tünel oluşturulmasını engelleyebilir.
  6. Güvenlik duvarı ve/veya EKL kısıtlamalarının türüne bağlı olarak sorunu düzeltmeniz gerekir sağlayabilir.
  7. Bu sorunu nasıl gidereceğinizi ve çözeceğinizi açıklamak için güvenlik duvarı kısıtlaması örneğini ele alalım. sorun:

    Senaryo: Arka uç sunucusundaki güvenlik duvarı kısıtlaması, Ana Makine Başlığının her zaman arka uç sunucu ana makine adını içermelidir

    Apigee Edge tarafından iletilen Ana Makine Başlığını belirlemek için aşağıdaki yöntemlerden birini kullanabilirsiniz:

    Trace

    Trace'i kullanarak Ana Makine Üstbilgisini belirlemek için:

    1. faultstring içindeki Proxy refused to create tunnel with response status 403 öğesinin, aşağıda açıklandığı gibi iz özelliğini kullanarak olduğunu doğrulayın: Yaygın teşhis adımları.
    2. Hedef İstek Akışı Başlatıldı aşamasına gidin ve İstek Başlıkları
    3. Ana makine üst bilgisinde belirtilen Request Headers (İstek Başlıkları) bölümüne gidin.
    4. Host (Ana makine) üstbilgisinde proxy ana makine adı varsa bu hatanın nedeni nedir?
    5. Bunun nedeni, güvenlik duvarının arka uç sunucusunda yalnızca Ana Makine Üstbilgisi, arka uç sunucunun adını içeriyorsa istek yapar.
    6. Bu nedenle, proxy sunucu tüneli arka uç sunucusuyla oluşturmaya çalıştığında hata ile başarısız oluyor

      Proxy refused to create tunnel with response status 403.

      Ana Makine Başlığında proxy ana makine adının bulunduğunu gösteren örnek iz

      ( resmi büyüt)

      Yukarıda gösterilen örnek izde, Ana Makine Başlığının proxy ana makinesinin adı www.proxyserver.com. arka uç sunucusunda yalnızca Ana Makine Üstbilgisi'nde yer alacak arka uç sunucu ana bilgisayar adını ayarladığınızda, hata Proxy refused to create tunnel with response status 403.

    tcpdump

    tcpdump kullanarak Ana Makine Üstbilgisini belirlemek için

    1. Şu kaynaktan gelen istekler için proxy sunucuda bir tcpdump yakalayın: Apigee Edge'in Mesaj İşlemci bileşenine aşağıdaki komut verilir:

      tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
      

      tcpdump komutunu kullanma hakkında daha fazla bilgi için bkz. tcpdump.

    2. tcpdump verilerini şunu kullanarak analiz edin: Wireshark aracı veya benzeri bir araç aracını kullanın.
    3. Elektronik tablo kullanarak yapılmış tcpdump komutunu kullanın.

      ( resmi büyüt)

    4. 13, 14 ve 15 numaralı paket numaraları İleti'nin İşlemci, üç yönlü TCP üzerinden proxy sunucusuyla bağlantı kuruyor çok önemlidir.
    5. 16 paketinde, Mesaj İşleyici proxy ana makineye bağlanmıştır httpbin.org (yukarıdaki örnekte gösterilmektedir).
    6. 16. paketi seçin ve paketin içeriğini ayrıntılı olarak inceleyin ve ileti tarafından proxy sunucuya iletilmekte olan Ana Makine Üstbilgisi İşleyen.

    7. Yukarıdaki örnekte, Ana Makine Üstbilgisi httpin.org, proxy sunucusunun ana makine adıdır. Bu nedenle, proxy sunucu yukarıdaki Ana Makine Başlığını ileterek arka uç sunucusuyla tüneli oluşturun httpin.org, Proxy refused to create tunnel with response status 403 hatasıyla başarısız oluyor.

Çözünürlük

Senaryo: Proxy sunucudaki güvenlik duvarı kısıtlaması, Ana Makine Başlığının arka uç sunucu ana makine adını her zaman içermelidir

Bu hatanın, arka uç sunucusundaki güvenlik duvarının Ana Makine Üstbilgisinin her zaman arka uç sunucusunu içermesini bekleyecek şekilde yapılandırılmıştır ana makine adına karşılık gelmelidir, ancak Mesaj İşleyici proxy sunucu ana makine adını gönderir, ardından ileti sorunu çözmek için aşağıdaki adımları uygulayın:

  1. use.proxy.host.header.with.target.uri özelliğini Aşağıdaki örnekte gösterildiği gibi TargetEndpoint:

    Örnek TargetEndpoint yapılandırması:

    <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>
    
    .
  2. İlgili diğer özelliklerin yönlendirme proxy'si, Mesaj İşleyici'de aşağıdaki gibi yapılandırılır:

    1. Mesaj İşleyicilerin her birinde /opt/apigee/customer/application/message-processor.properties dosyasını inceleyin.
    2. Aşağıdaki özelliklerin kullanım alanınıza veya gereksinimlerinize göre ayarlandığından emin olun:

      Mülkler için örnek değerler:

      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
      
      .

Teşhis bilgileri toplanmalıdır

Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki Apigee Edge Destek Ekibi ile iletişime geçin:

Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Başarısız istekler için tam hata mesajı gözlemlendi
  • Ortam adı
  • API proxy paketi
  • API istekleri için izleme dosyası
  • NGINX erişim günlükleri

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Konum: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.

  • Mesaj İşleyici sistem günlükleri

    /opt/apigee/var/log/edge-message-processor/logs/system.log
    

Referanslar