502 Hatalı Ağ Geçidi - Yanıt ileGövde

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

Belirti

İstemci uygulaması 502 Bad Gateway şeklinde bir HTTP durum kodu alıyor API çağrılarına yanıt olarak protocol.http.ResponseWithBody kodunu kullanır.

Hata mesajı

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

HTTP/1.1 502 Bad Gateway

Ayrıca, aşağıdaki hata mesajlarından biriyle karşılaşabilirsiniz:

{
   "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"
      }
   }
}

Olası nedenler

Bu hata, arka uç sunucusundan Apigee Edge'e verilen HTTP yanıtı 204 No Content veya 205 Reset Content ancak yanıtı içeriyor body ve/veya aşağıdaki başlıklardan birini veya daha fazlasını içermelidir:

  • Content-Length
  • Content-Encoding
  • Transfer-Encoding

Spesifikasyonlara göre RFC 7231, bölüm 6.3.5: 204 İçerik Yok ve RFC 7231, bölüm 6.3.6: 205 İçeriği Sıfırlama için ek içerik olmaması beklenir kaynak sunucu tarafından 204 No Content veya 205 Reset Content durum koduyla yanıt yük gövdesinin bir parçası olarak gönderilmelidir. Yanıt başlıkları Content-Length, Content-Encoding veya Transfer-Encoding, yanıt yükünün boyutunu, türünü veya biçimini belirtir.

Bu nedenle Apigee Edge, 502 Bad Gateway hata kodunu protocol.http.ResponseWithBody koşullar:

Arka uç sunucusundan alınan durum kodu
Arka uç sunucusundan alınan yanıt şunu içeriyor: 204 İçerik Yok 205 İçeriği Sıfırlama
Yanıt Metni HATA HATA

Content-Length üst bilgisi

(sıfır olmayan bir değere ayarlanmış)

HATA HATA

Content-Encoding

( desteklenen kodlamayı inceleyin)

HATA HATA YOK
Transfer-Encoding HATA HATA

Bu hatanın olası nedenleri aşağıda açıklanmıştır:

Neden Açıklama Şunun için geçerli sorun giderme talimatları:
Arka uç sunucusundan 204 yanıtı olan yanıt gövdesi veya Başlıklar Arka uç sunucusu 204 No Content veya 205 Reset Content gönderir yanıt gövdesi ve/veya bir ya da daha fazla başlık Content-Type ile yanıt, Content-Encoding veya Transfer-Encoding. Edge Herkese Açık ve 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:

API Monitoring

API Monitoring'i kullanarak hatayı teşhis etmek için:

  1. Apigee Edge kullanıcı arayüzünde uygun role sahip olur.
  2. Sorunu incelemek istediğiniz kuruluşa geçin.

  3. Analiz > API İzleme > İnceleme sayfası.
  4. Hataları gözlemlediğiniz zaman aralığını seçin.
  5. Zaman ile Hata Kodu'nun grafiğini çizin.
  6. protocol.http.ResponseWithBody hata koduna sahip bir hücre seçin: aşağıda gösterilmiştir:

    ( resmi büyüt)

  7. Hata koduyla ilgili bilgileri görürsünüz Aşağıda gösterildiği gibi protocol.http.ResponseWithBody:

    ( resmi büyüt)

  8. Günlükleri görüntüle'yi tıklayın ve başarısız isteğin bulunduğu satırı genişletin.

    ( resmi büyüt)

  9. Günlükler penceresinde aşağıdaki ayrıntılara dikkat edin:
    • Durum Kodu: 502
    • Hata Kaynağı: target
    • Hata Kodu: protocol.http.ResponseWithBody.
  10. Hata Kaynağı için target ve Hata Kod protocol.http.ResponseWithBody değerine sahipse bu arka uç sunucusunun bir Şununla birlikte 204 No Content veya 205 Reset Content durum kodu: yanıt gövdesi ve/veya Olası nedenler bölümüne bakın.

İzleme aracı

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

  1. İzleme oturumunu etkinleştir ve şunlardan birini yapın:
    1. 502 Bad Gateway hatasının oluşmasını bekleyin. veya
    2. Sorunu yeniden oluşturabiliyorsanız API çağrısı yapın ve 502 Bad Gateway hatasını yeniden oluşturun.
  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 flowinfo Hata içinde Aşağıda gösterildiği gibi İstek hedef sunucuya gönderildi aşamasından sonra:

    1. Senaryo

    1. Senaryo: Arka Uç Sunucu, 204 No Content durum koduyla yanıt veriyor yanıt gövdesini ve/veya şurada listelenen başlıklardan birini içeren: Olası nedenler.

    İzdeki aşağıdaki değerleri not edin:

    • hata: Received 204 Response with message body
    • error.class: com.apigee.rest.framework.BadGateway

    2. Senaryo

    2. Senaryo: Arka Uç Sunucu, durum koduyla yanıt veriyor 204 No Content yanıt gövdesini ve/veya Olası nedenler bölümünde listelenen üstbilgileri.

    İzdeki aşağıdaki değerleri not edin:

    • hata: Received 205 Response with message body
    • error.class: com.apigee.rest.framework.BadGateway
  6. İzlemede AX (Kayıtlı Analytics Verileri) aşamasına gidin ve düğmeyi tıklayın.
  7. Aşama Ayrıntıları, Hata Başlıkları bölümüne gidin ve X-Apigee-fault-code ve X-Apigee-fault-source değerlerini belirleme aşağıdaki gibidir:

    ( resmi büyüt)

  8. X-Apigee-fault-code ve X-Apigee-fault-source değerlerinin Sırasıyla are protocol.http.ResponseWithBody ve target. Bu, hatanın arka uç sunucusunun bir 204 No Content veya 205 Reset Content durum kodu yanıt gövdesi ve/veya Olası nedenler bölümünde belirtilen başlıklardan biri.
    Hata Değer
    X-Apigee-fault-code protocol.http.ResponseWithBody
    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 502 Bad Gateway ile ilgili önemli bilgileri belirler.
  2. NGINX erişim günlüklerini kontrol edin:

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

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

  3. Hata kodu içeren 502 hatası olup olmadığını görmek için arama yapın Belirli bir süre boyunca protocol.http.ResponseWithBody (sorun geçmişte oluşmuşsa) veya hâlâ başarısız olan bir istek varsa 502
  4. X-Apigee-fault-code ile herhangi bir 502 hatası bulursanız şununla eşleşir: protocol.http.ResponseWithBody, ardından X-Apigee-fault-source'un değerini düşünün.

    NGINX erişim günlüğünden örnek 502 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.ResponseWithBody
    X-Apigee-fault-source target
  5. X-Apigee-fault-code ve X-Apigee-fault-source değerlerinin sırasıyla protocol.http.ResponseWithBody ve target. Bu, hatanın arka uç sunucusunun bir 204 No Content veya 205 Reset Content durum kodu yanıt gövdesi ve/veya Olası nedenler bölümünde belirtilen başlıklardan biri.

Neden: Arka uç sunucusundan 204 yanıtı içeren yanıt gövdesi veya Başlıklar

Teşhis

  1. API kullanılarak gözlemlenen hatanın Hata Kodu ve Hata Kaynağı'nı belirleme İzleme, İzleme aracı veya NGINX erişim günlükleri aşağıda açıklandığı gibi Yaygın teşhis adımları.
  2. Hata Kodu protocol.http.ResponseWithBody ise ve Hata Kaynağı target değerine sahipse bu değer, arka ucun sunucu, 204 No Content veya 205 Reset Content durumuyla yanıt verdi yanıt gövdesini ve/veya başlıklı yardım makalesinde bahsedilen başlıklardan birini içeren kodu Olası nedenler.
  3. Arka uç sunucusunun gerçekten bir yanıt yük gövdesi ve/veya bir Olası nedenler bölümünde bahsedilen daha fazla başlığı veya daha fazlasını iptal etmek için şu adımları uygulayın:

    1. Herkese Açık Bulut kullanıcısıysanız ve aynı API isteğini arka uç sunucunuzu doğrudan sistemlerinizden yükleyebilirsiniz.

    2. Private Cloud kullanıcısıysanız aynı API isteğini ilişkili olan Mesaj İşleyicilerin birinden doğrudan arka uç sunucusuna göndermenizi sağlar. sistemi ve ortamı belirler.
    3. Arka uç sunucusundan alınan yanıtı inceleyin ve ve/veya yukarıda bahsedilen başlıklardan birini veya daha fazlasını içermelidir. Cevabınız evet ise o zaman bu hatanın nedeni hakkında bilgi edinin.

      Örnek 1

      1. Örnek: Content-Encoding Üstbilgisi ile Arka Uç Sunucu Yanıtı 204

      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-alive
      

      Bu örnekte, arka uç sunucusu 204 No Content durum kodu ve Content-Encoding: gzip

      Örnek 2

      2. Örnek: Content-Length Header ile Arka Uç Sunucu Yanıtı 204

      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-alive
      

      Bu örnekte, arka uç sunucusu 204 No Content durum kodu ve Content-Length: 48

      Örnek 3

      3. Örnek: Yanıt Gövdesi ile Arka Uç Sunucu Yanıtı 205

      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
      

      Bu örnekte, arka uç sunucusu Yanıt gövdesiyle birlikte 205 Reset Content durum kodu This is a sample Response.

    4. Yukarıdaki örneklerin tümünde arka uç sunucusu 204 No Content veya Yanıt gövdesi ve/veya başlıklardan birini içeren 205 Reset Content durum kodu Olası nedenler bölümünde belirtilmiştir.
    5. Bu nedenle Apigee Edge hata koduyla birlikte 502 Bad Gateway durum kodu gönderdi protocol.http.ResponseWithBody.

Çözünürlük

Arka uç sunucusunun her zaman spesifikasyona uyduğundan emin olun RFC 7231, bölüm 6.3.6: 205 İçeriği Sıfırla, 204 No Content veya Apigee Edge'e 205 Reset Content yanıtı verilebilir. Yani arka uç sunucusu, aşağıdakileri 204 No Content veya 205 Reset Content yanıt:

  1. Yanıt yük gövdesi
  2. Ayrıca aşağıdaki başlıklardan herhangi biri:
    1. Content-Length
    2. Content-Encoding
    3. Transfer-Encoding

Spesifikasyon

Apigee Edge, 502 Bad Gateway durum kodu ve hata koduyla yanıt verir protocol.http.ResponseWithBody arka uç sunucusu, 204 No Content veya 205 Reset Content yanıt, ancak aşağıdaki RFC spesifikasyonlarına uymuyor:

Spesifikasyon
RFC 7231, bölüm 6.3.5: 204 İçerik Yok
RFC 7231, bölüm 6.3.6: 205 İçeriği Sıfırlama

Dikkat edilmesi gereken önemli noktalar

Önerilen çözüm, arka uç sunucusunu düzelterek 204 No Content ve yanıt gövdesi ve205 Reset Content başlıklar - Content-Length, Content-Encoding ve Transfer-Encoding ve spesifikasyonlara uymalısınız RFC 7231, bölüm 6.3.5: 204 İçerik Yok ve RFC 7231, bölüm 6.3.6: 205 İçeriği Sıfırlama.

Hâlâ Apigee Destek Ekibi'nden yardım almak istiyorsanız şu sayfaya gidin: Teşhis bilgileri toplanmalıdır.

Teşhis bilgileri toplanmalıdır

Aşağıdaki teşhis bilgilerini toplayın, ardından Apigee Edge Destek Ekibi ile iletişime geçin:

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

  • Kuruluş adı
  • Ortam adı
  • API Proxy adı
  • 502 hatasını yeniden oluşturmak için kullanılan curl komutunu tamamlayın
  • API istekleri için izleme dosyası

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

    Yer: ORG, ENV ve PORT# şununla değiştirilir: gerçek değerler.

  • Mesaj İşleyici sistem günlükleri /opt/apigee/var/log/edge-message-processor/logs/system.log