Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak protocol.http.ResponseWithBody
hata koduna sahip 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 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 HTTP yanıtı 204 No Content
ya da 205 Reset Content
ise ancak yanıtta yanıt gövdesi ve/veya aşağıdaki başlıklardan birini ya da daha fazlasını içeriyorsa ortaya çıkar:
Content-Length
Content-Encoding
Transfer-Encoding
RFC 7231, bölüm 6.3.5: 204 No Content ve
RFC 7231, bölüm 6.3.6: 205 İçeriği Sıfırla spesifikasyonlarına göre, kaynak sunucu tarafından 204 No
Content
veya 205 Reset Content
durum koduna sahip yanıt yükü gövdesinin parçası olarak ek içerik gönderilmemelidir. Content-Length
, Content-Encoding
veya Transfer-Encoding
gibi yanıt başlıkları, yanıt yükünün boyutunu, türünü veya biçimini belirtir.
Bu nedenle Apigee Edge, aşağıdaki durumlarda istemciye protocol.http.ResponseWithBody
hata koduna sahip 502 Bad Gateway
durum kodu döndürür:
Arka uç sunucusundan alınan durum kodu | ||
---|---|---|
Arka uç sunucusundan gelen yanıt şunu içeriyor: | 204 İçerik Yok | 205 İçeriği Sıfırla |
Yanıt Metni | HATA | HATA |
(sıfır olmayan bir değere ayarlanmış) |
HATA | HATA |
( Apigee Edge'de desteklenen kodlama olarak ayarlanmıştır) |
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ı: |
---|---|---|
Yanıt gövdesi veya arka uç sunucusundan 204 yanıtı olan başlıklar | Arka uç sunucusu, yanıt gövdesi ve/veya Content-Type , Content-Encoding ya da Transfer-Encoding üstbilgilerinden en az birini içeren bir 204 No Content veya 205 Reset Content yanıtı gönderir. |
Edge Herkese Açık ve Özel Bulut kullanıcıları |
Yaygın 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:
- Uygun role sahip bir kullanıcı olarak Apigee Edge kullanıcı arayüzünde oturum açın.
Sorunu incelemek istediğiniz kuruluşa geçin.
- Analiz > API İzleme > Araştır sayfasına gidin.
- Hataları gözlemlediğiniz belirli zaman aralığını seçin.
- Hata Kodu'nu Zamana göre çizin.
Aşağıda gösterildiği gibi
protocol.http.ResponseWithBody
hata koduna sahip bir hücre seçin:protocol.http.ResponseWithBody
hata koduyla ilgili bilgileri aşağıda gösterildiği gibi görürsünüz:Günlükleri görüntüle'yi tıklayın ve başarısız isteğin satırını genişletin.
- Günlükler penceresinde aşağıdaki ayrıntıları dikkate alın:
- Durum Kodu:
502
- Hata Kaynağı:
target
- Hata Kodu:
protocol.http.ResponseWithBody
.
- Durum Kodu:
- Hata Kaynağı
target
değerine ve Hata Koduprotocol.http.ResponseWithBody
değerine sahipse bu durum, hatanın arka uç sunucusunun yanıt gövdesi ve/veya Olası nedenler bölümünde bahsedilen üst bilgilerle birlikte bir204 No Content
ya da205 Reset Content
durum kodu göndermesi nedeniyle oluştuğunu belirtir.
İzleme aracı
Hatayı İzle aracını kullanarak teşhis etmek için:
- İzleme oturumunu etkinleştirin ve aşağıdakilerden birini yapın:
502 Bad Gateway
hatasının oluşmasını bekleyin.- Sorunu yeniden oluşturabiliyorsanız API çağrısında bulunun ve
502 Bad Gateway
hatasını yeniden oluşturun.
Tüm FlowInfo'ları göster seçeneğinin etkin olduğundan emin olun:
- Başarısız isteklerden birini seçip izi inceleyin.
- İzin farklı aşamaları arasında gezinin ve hatanın nerede gerçekleştiğini bulun.
Bu hatayı genellikle aşağıda gösterildiği gibi İstek hedef sunucuya gönderildi aşamasından hemen sonra
flowinfo
Hatası bölümünde bulabilirsiniz:1. Senaryo
1. Senaryo: Arka Uç Sunucusu, yanıt gövdesini ve/veya Olası nedenler bölümünde listelenen başlıklardan birini içeren
204 No Content
durum koduyla yanıt veriyor.İ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ç Sunucusu, yanıt gövdesini ve/veya Olası nedenler başlıklı makalede listelenen üst bilgilerden birini içeren
204 No Content
durum koduyla yanıt veriyor.İzdeki aşağıdaki değerleri not edin:
- hata:
Received 205 Response with message body
- error.class:
com.apigee.rest.framework.BadGateway
- hata:
- İzdeki AX (Analytics Verileri Kaydedilen) aşamasına gidin ve bunu tıklayın.
Aşama Ayrıntıları ve Hata Başlıkları bölümüne ilerleyin ve X-Apigee-fault-code ile X-Apigee-fault-source değerlerini aşağıda gösterildiği gibi belirleyin:
- Sırasıyla X-Apigee-fault-code ve X-Apigee-fault-source
are protocol.http.ResponseWithBody
vetarget
değerlerini unutmayın. Bu, hatanın arka uç sunucusunun yanıt gövdesiyle ve/veya Olası nedenler bölümünde bahsedilen başlıklardan biriyle birlikte bir204 No Content
veya205 Reset Content
durum kodu göndermesi nedeniyle oluştuğunu belirtir.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:
- Private Cloud kullanıcısıysanız HTTP
502 Bad Gateway
ile ilgili önemli 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_log
Yer: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.
- Belirli bir süre boyunca
protocol.http.ResponseWithBody
hata koduna sahip502
hatası (sorun geçmişte olduysa) veya502
nedeniyle hâlâ başarısız olan bir istek olup olmadığını görmek için arama yapın. protocol.http.ResponseWithBody
değeriyle eşleşen X-Apigee-fault-code ile herhangi bir502
hatası bulursanız X-Apigee-fault-source değerini belirleyin.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 için aşağıdaki değerlere sahiptir:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.ResponseWithBody
X-Apigee-fault-source target
- X-Apigee-fault-code ve X-Apigee-fault-source değerlerinin sırasıyla
protocol.http.ResponseWithBody
vetarget
olduğunu unutmayın. Bu, hatanın arka uç sunucusunun yanıt gövdesiyle ve/veya Olası nedenler bölümünde bahsedilen başlıklardan biriyle birlikte bir204 No Content
veya205 Reset Content
durum kodu göndermesi nedeniyle oluştuğunu belirtir.
Neden: Yanıt gövdesi veya arka uç sunucusundan 204 yanıtı olan başlıklar
Teşhis
- API Monitoring, İzleme aracı veya NGINX erişim günlüklerini kullanarak gözlemlenen hata için Yaygın teşhis adımları bölümünde açıklandığı şekilde Hata Kodu ve Hata Kaynağı'nı belirleyin.
- Hata Kodu
protocol.http.ResponseWithBody
ve Hata Kaynağıtarget
değerine sahipse bu durum, arka uç sunucusunun yanıt gövdesi ve/veya Olası nedenler bölümünde bahsedilen başlıklardan biriyle birlikte204 No Content
ya da205 Reset Content
durum koduyla yanıt verdiğini gösterir. Arka uç sunucusunun gerçekten bir yanıt yükü gövdesi ve/veya Olası nedenler bölümünde belirtilen başlıklardan 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 doğrudan herhangi bir sisteminizden arka uç sunucusuna gönderebiliyorsanız.
- Private Cloud kullanıcısıysanız arka uç sunucusuna aynı API isteğini doğrudan hatanın gözlemlendiği kuruluş ve ortamla ilişkilendirilmiş Mesaj İşleyicilerin birinden 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 bahsedilen başlıklardan birini ya da daha fazlasını içerdiğini doğrulayın. Yanıtınız evetse bu hatanın nedeni budur.
1. Örnek
1. Örnek: Content-Encoding 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-Encoding: gzip
< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-aliveBu örnekte, arka uç sunucusu
204 No Content
durum kodu veContent-Encoding: gzip
ile yanıt verdiÖ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-aliveBu örnekte, arka uç sunucusu
204 No Content
durum kodu veContent-Length: 48
ile yanıt verdiÖ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,
This is a sample Response.
yanıt gövdesiyle205 Reset Content
durum koduyla yanıt verdi- Yukarıdaki örneklerin tümünde, arka uç sunucusu yanıt gövdesi ve/veya Olası nedenler bölümünde bahsedilen başlıklardan biriyle birlikte
204 No Content
veya205 Reset Content
durum kodu göndermiştir. - Bu nedenle Apigee Edge,
protocol.http.ResponseWithBody
hata koduyla birlikte502 Bad Gateway
durum kodu gönderdi.
Çözünürlük
Apigee Edge'e 204 No Content
veya 205 Reset Content
yanıtını gönderirken arka uç sunucusunun her zaman
RFC 7231, bölüm 6.3.6: 205 İçeriği Sıfırlama spesifikasyonuna uyduğundan emin olun. Diğer bir deyişle, arka uç sunucusu aşağıdaki bilgileri 204 No Content
veya 205 Reset Content
yanıtının parçası olarak GÖNDERMEMELİDİR:
- Yanıt yükü gövdesi
- Ayrıca aşağıdaki başlıklardan herhangi biri:
Content-Length
Content-Encoding
Transfer-Encoding
Spesifikasyon
Arka uç sunucusu 204 No Content
veya 205 Reset Content
yanıtı gönderirse ancak aşağıdaki RFC özelliklerine uymuyorsa 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 İçerik Yok |
RFC 7231, bölüm 6.3.6: 205 İçerik Sıfırlama |
Dikkat edilmesi gereken önemli noktalar
Önerilen çözüm, arka uç sunucusunun 204 No Content
ve 205 Reset Content
durum kodunu yanıt gövdesi ve başlıklardan herhangi biri (Content-Length
, Content-Encoding
,
Transfer-Encoding
) olmadan gönderecek ve
RFC 7231, bölüm 6.3.5: 204 No Content ve
RFC 7231, bölüm 6.3.6: 205 İçeriği Sıfırla özelliklerine uymasıdır.
Apigee Desteği'nden hâlâ yardıma ihtiyacınız varsa Teşhis bilgilerini toplamanız gerekiyor bölümünü inceleyin.
Teşhis bilgileri toplanmalı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 adı
502
hatasını yeniden oluşturmak için kullanılancurl
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 gözlemlenen tam hata mesajı
- 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# gerçek değerlerle değiştirilir.
- Mesaj İşleyici sistem günlükleri
/opt/apigee/var/log/edge-message-processor/logs/system.log