Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak hata kodu protocol.http.ResponseWithBody ile birlikte 502 Bad Gateway HTTP durum kodunu alı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 birini de görebilirsiniz:
{
"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 gelen HTTP yanıtı 204 No Content veya 205 Reset Content ise ancak yanıt gövdesini ve/veya aşağıdaki üst bilgilerden birini ya da daha fazlasını içeriyorsa oluşur:
Content-LengthContent-EncodingTransfer-Encoding
RFC 7231, bölüm 6.3.5: 204 No Content ve
RFC 7231, bölüm 6.3.6: 205 Reset Content spesifikasyonlarına göre, kaynak sunucu tarafından durum kodu 204 No
Content veya 205 Reset Content ile yanıt yükü gövdesinin bir parçası olarak ek içerik gönderilmemesi beklenir. Content-Length, Content-Encoding veya Transfer-Encoding gibi yanıt üstbilgileri, yanıt yükünün boyutunu, türünü ya da biçimini gösterir.
Bu nedenle, Apigee Edge aşağıdaki durumlarda istemciye 502 Bad Gateway durum koduyla birlikte protocol.http.ResponseWithBody hata kodunu döndürür:
| Arka uç sunucusundan gelen durum kodu | ||
|---|---|---|
| Arka uç sunucusundan gelen yanıtta şunlar bulunur: | 204 No Content | 205 Reset Content |
| Yanıt Metni | HATA | HATA |
(sıfır olmayan bir değere ayarlanır) |
HATA | HATA |
(set to supported encoding in Apigee Edge) |
HATA | HATA YOK |
Transfer-Encoding |
HATA | HATA |
Bu hatanın olası nedenleri şunlardır:
| Neden | Açıklama | Aşağıdaki ürünler için geçerli sorun giderme talimatları |
|---|---|---|
| Arka uç sunucusundan 204 yanıtı içeren yanıt gövdesi veya üstbilgiler | Arka uç sunucusu, yanıt gövdesi ve/veya Content-Type, Content-Encoding veya Transfer-Encoding üstbilgilerinden birini ya da daha fazlasını içeren bir 204 No Content veya 205 Reset Content yanıtı gönderir. |
Edge Public ve Private Cloud kullanıcıları |
Sık karşılaşılan teşhis adımları
Bu hatayı teşhis etmek için aşağıdaki araçlardan/tekniklerden birini kullanın:
API Monitoring
API İzleme'yi kullanarak hatayı teşhis etmek için:
- Apigee Edge kullanıcı arayüzünde oturum açın. Uygun bir role sahip bir kullanıcı olarak oturum açın.
Sorunu incelemek istediğiniz kuruluşa geçin.
- Analyze > API Monitoring > Investigate (Analiz > API İzleme > İnceleme) sayfasına gidin.
- Hataları gözlemlediğiniz belirli zaman aralığını seçin.
- Hata Kodunu Zaman ile karşılaştırın.
Aşağıda gösterildiği gibi, hata kodu
protocol.http.ResponseWithBodyolan bir hücre seçin:
Aşağıda gösterildiği gibi, hata koduyla ilgili bilgileri görürsünüz:
protocol.http.ResponseWithBody
Günlükleri görüntüle'yi tıklayın ve başarısız olan isteğin satırını genişletin.
- Günlükler penceresinde aşağıdaki ayrıntıları not edin:
- Durum Kodu:
502 - Hata Kaynağı:
target - Hata Kodu:
protocol.http.ResponseWithBody.
- Durum Kodu:
- Hata Kaynağı değeri
targetve Hata Kodu değeriprotocol.http.ResponseWithBodyise bu, arka uç sunucunun yanıt gövdesiyle ve/veya Olası nedenler bölümünde belirtilen başlıklardan biriyle birlikte204 No Contentveya205 Reset Contentdurum kodu gönderdiği için hatanın oluştuğunu gösterir.
İzleme aracı
İzleme aracını kullanarak hatayı teşhis etmek için:
- İzleme oturumunu ve aşağıdakilerden birini etkinleştirin:
502 Bad Gatewayhatasının oluşmasını bekleyin veya- Sorunu yeniden oluşturabiliyorsanız API çağrısı yapın ve
502 Bad Gatewayhatasını yeniden oluşturun.
Tüm FlowInfo'ları göster'in etkinleştirildiğinden emin olun:
- Başarısız olan isteklerden birini seçip izlemeyi inceleyin.
- İzlemenin farklı aşamalarında gezinin ve hatanın nerede oluştuğunu bulun.
Hatayı genellikle aşağıdaki örnekte gösterildiği gibi
flowinfoError (Hata) bölümünde, Request sent to target server (İstek hedef sunucuya gönderildi) aşamasından hemen sonra bulabilirsiniz:1. senaryo
Senaryo 1: Arka uç sunucusu, yanıt gövdesi ve/veya
204 No Contentdurum koduyla yanıt veriyor Olası nedenler bölümünde listelenen üst bilgilerden birini içeriyor.
İzleme kaydındaki aşağıdaki değerleri not edin:
- hata:
Received 204 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
2. senaryo
Senaryo 2: Arka uç sunucusu, yanıt gövdesi ve/veya Olası nedenler bölümünde listelenen üst bilgilerden birini içeren
204 No Contentdurum koduyla yanıt veriyor.
İzleme kaydındaki aşağıdaki değerleri not edin:
- hata:
Received 205 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
- hata:
- İzleme işleminde AX (Analytics Verileri Kaydedildi) aşamasına gidin ve bu aşamayı tıklayın.
Aşağı kaydırarak Aşama Ayrıntıları, Hata Başlıkları bölümüne gidin ve aşağıdaki gibi X-Apigee-fault-code ve X-Apigee-fault-source değerlerini belirleyin:
- X-Apigee-fault-code ve X-Apigee-fault-source değerlerinin sırasıyla
are protocol.http.ResponseWithBodyvetargetolduğunu unutmayın. Bu, arka uç sunucusu yanıt gövdesiyle ve/veya Olası nedenler bölümünde belirtilen başlıklardan biriyle birlikte204 No Contentveya205 Reset Contentdurum kodu gönderdiği için hatanın oluştuğunu gösterir.Hata Değer X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target
NGINX
NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:
- Özel bulut kullanıcısıysanız HTTP
502 Bad Gatewayile ilgili temel bilgileri belirlemek için NGINX erişim günlüklerini kullanabilirsiniz. NGINX erişim günlüklerini kontrol edin:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logNerede: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.
- Belirli bir süre boyunca
502hata koduyla hata olup olmadığını (sorun geçmişte yaşandıysa) veyaprotocol.http.ResponseWithBodyile hâlâ başarısız olan istekler olup olmadığını502arayın. X-Apigee-fault-code ile
502değerinin eşleştiği502hataları bulursanız X-Apigee-fault-source değerini belirleyin.protocol.http.ResponseWithBodyNGINX erişim günlüğünden örnek 502 hatası:
NGINX erişim günlüğündeki yukarıdaki örnek girişte X- Apigee-fault-code ve X-Apigee-fault-source için aşağıdaki değerler bulunur:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target- X-Apigee-fault-code ve X-Apigee-fault-source değerlerinin sırasıyla
protocol.http.ResponseWithBodyvetargetolduğunu unutmayın. Bu, arka uç sunucusu yanıt gövdesiyle ve/veya Olası nedenler bölümünde belirtilen başlıklardan biriyle birlikte204 No Contentveya205 Reset Contentdurum kodu gönderdiği için hatanın oluştuğunu gösterir.
Nedeni: Arka uç sunucusundan 204 yanıtı içeren yanıt gövdesi veya üstbilgiler
Teşhis
- Genel teşhis adımlarında açıklandığı gibi API izleme, izleme aracı veya NGINX erişim günlükleri kullanılarak gözlemlenen hatanın Hata Kodunu ve Hata Kaynağını belirleyin.
- Hata Kodu
protocol.http.ResponseWithBodyise ve Hata Kaynağı değeritargetise bu, arka uç sunucusunun yanıt gövdesi ve/veya Olası nedenler bölümünde belirtilen başlıklardan biriyle birlikte204 No Contentveya205 Reset Contentdurum koduyla yanıt verdiği anlamına gelir. Arka uç sunucusunun gerçekten bir yanıt yükü gövdesi ve/veya Olası nedenler bölümünde belirtilen üstbilgilerden birini ya da daha fazlasını gönderip göndermediğini doğrulamak için aşağıdaki adımları uygulayabilirsiniz:
Herkese açık bulut kullanıcısıysanız ve aynı API isteğini sistemlerinizin herhangi birinden doğrudan arka uç sunucusuna gönderebiliyorsanız.
- Özel bulut kullanıcısıysanız aynı API isteğini doğrudan hatanın gözlemlendiği belirli kuruluş ve ortamla ilişkili Mesaj İşleyicilerden birinden arka uç sunucusuna gönderebilirsiniz.
Arka uç sunucusundan alınan yanıtı inceleyin ve yanıtın bir yanıt yükü gövdesi ve/veya yukarıda belirtilen başlıklardan birini veya daha fazlasını içerdiğini doğrulayın. Evetse bu hatanın nedeni budur.
1. örnek
1. örnek: İçerik kodlama üstbilgisiyle 204 arka uç sunucusu yanıtı
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-aliveBu örnekte, arka uç sunucusu
204 No Contentdurum kodu veContent-Encoding: gzipile yanıt verdi.2. örnek
2. örnek: İçerik uzunluğu üstbilgisiyle 204 arka uç sunucu yanıtı
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-aliveBu örnekte, arka uç sunucusu
204 No Contentdurum kodu veContent-Length: 48ile yanıt verdi.3. örnek
3. örnek: Yanıt gövdesiyle birlikte arka uç sunucusu 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 ResponseBu örnekte, arka uç sunucusu yanıt gövdesiyle birlikte
205 Reset Contentdurum koduyla yanıt verdi.This is a sample Response.- Yukarıdaki örneklerin hepsinde arka uç sunucusu, yanıt gövdesiyle birlikte
204 No Contentveya205 Reset Contentdurum kodu ve/veya Olası nedenler bölümünde belirtilen başlıklardan birini gönderdi. - Bu nedenle, Apigee Edge,
502 Bad Gatewaydurum kodunuprotocol.http.ResponseWithBodyhata koduyla birlikte gönderdi.
Çözünürlük
Arka uç sunucusunun, Apigee Edge'e 204 No Content veya 205 Reset Content yanıtı gönderirken her zaman
RFC 7231, bölüm 6.3.6: 205 Reset Content şartnamesine uyduğundan emin olun. Yani arka uç sunucusu, 204 No Content veya 205 Reset Content yanıtının bir parçası olarak aşağıdakileri GÖNDERMEMELİDİR:
- Yanıt yükü gövdesi
- Ayrıca aşağıdaki başlıklardan herhangi biri:
Content-LengthContent-EncodingTransfer-Encoding
Spesifikasyon
Arka uç sunucu 204 No Content veya 205 Reset Content yanıtı gönderirse ancak aşağıdaki RFC spesifikasyonlarına uymazsa Apigee Edge, 502 Bad Gateway durum kodu ve protocol.http.ResponseWithBody hata koduyla yanıt verir:
| Spesifikasyon |
|---|
| RFC 7231, bölüm 6.3.5: 204 No Content |
| RFC 7231, bölüm 6.3.6: 205 Reset Content |
Dikkat edilmesi gereken önemli noktalar
Önerilen çözüm, arka uç sunucusunu düzeltip yanıt gövdesi ve 204 No Content, 205 Reset Content, Content-Length, Content-Encoding ve Transfer-Encoding başlıklarından herhangi biri olmadan 204 No Content ve 205 Reset Content durum kodunu gönderecek şekilde ayarlamaktır. Ayrıca,
RFC 7231, bölüm 6.3.5: 204 No Content ve
RFC 7231, bölüm 6.3.6: 205 Reset Content spesifikasyonlarına uymak gerekir.
Apigee Destek Ekibi'nden hâlâ yardıma ihtiyacınız varsa Toplanması gereken teşhis bilgileri başlıklı makaleyi inceleyin.
Teşhis bilgilerini toplamalıdır
Aşağıdaki teşhis bilgilerini toplayın ve ardından Apigee Edge Destek Ekibi ile iletişime geçin:
Herkese açık bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş adı
- Ortam adı
- API proxy'si adı
502hatasını yeniden oluşturmak için kullanılancurlkomutunun tamamı- API istekleri için izleme dosyası
Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Başarısız olan istekler için gözlemlenen hata mesajının tamamı
- 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_logNerede: 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