502 गलत गेटवे - responseWithBody

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

समस्या का ब्यौरा

क्लाइंट ऐप्लिकेशन को इस गड़बड़ी के साथ 502 Bad Gateway का एचटीटीपी स्टेटस कोड मिलता है एपीआई कॉल के रिस्पॉन्स के तौर पर protocol.http.ResponseWithBody कोड.

गड़बड़ी का मैसेज

क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:

HTTP/1.1 502 Bad Gateway

इसके अलावा, आपको इनमें से गड़बड़ी का कोई एक मैसेज भी दिख सकता है:

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

संभावित कारण

यह गड़बड़ी तब होती है, जब बैकएंड सर्वर से Apigee Edge पर एचटीटीपी रिस्पॉन्स मिलता है 204 No Content या 205 Reset Content, लेकिन इसमें रिस्पॉन्स शामिल है मुख्य हिस्से और/या एक या एक से ज़्यादा हेडर:

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

निर्देशों के मुताबिक आरएफ़सी 7231, सेक्शन 6.3.5: 204 कोई कॉन्टेंट नहीं और आरएफ़सी 7231, सेक्शन 6.3.6: 205 कॉन्टेंट रीसेट करें, ऐसे में उम्मीद की जाती है कि कोई और कॉन्टेंट न हो ऑरिजिन सर्वर से, स्टेटस कोड 204 No Content या 205 Reset Content के साथ रिस्पॉन्स पेलोड बॉडी के हिस्से के तौर पर भेजा जाना चाहिए. रिस्पॉन्स हेडर जैसे, Content-Length, Content-Encoding या Transfer-Encoding रिस्पॉन्स पेलोड का साइज़, टाइप या फ़ॉर्मैट दिखाता है.

इसलिए, Apigee Edge, इसके साथ 502 Bad Gateway स्टेटस कोड दिखाता है नीचे दी गई बातों के तहत क्लाइंट को गड़बड़ी कोड protocol.http.ResponseWithBody स्थितियां:

बैकएंड सर्वर से मिला स्थिति कोड
बैकएंड सर्वर से मिले जवाब में यह शामिल है 204 कोई सामग्री नहीं 205 सामग्री रीसेट करें
जवाब का मुख्य भाग गड़बड़ी गड़बड़ी

Content-Length हेडर

(शून्य से ज़्यादा पर सेट करें)

गड़बड़ी गड़बड़ी

Content-Encoding

(इस पर सेट करें Apigee Edge में काम करने वाला कोड)

गड़बड़ी कोई गड़बड़ी नहीं
Transfer-Encoding गड़बड़ी गड़बड़ी

इस गड़बड़ी की ये वजहें हो सकती हैं:

वजह ब्यौरा इसके लिए लागू होने वाले, समस्या हल करने के निर्देश
बैकएंड सर्वर से 204 रिस्पॉन्स के साथ जवाब का मुख्य हिस्सा या हेडर बैकएंड सर्वर, 204 No Content या 205 Reset Content भेजता है जवाब के मुख्य हिस्से और/या एक या एक से ज़्यादा हेडर Content-Type के साथ, Content-Encoding या Transfer-Encoding. Edge के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता

गड़बड़ी की जांच करने के सामान्य तरीके

इस गड़बड़ी का पता लगाने के लिए, इनमें से किसी एक टूल/तकनीक का इस्तेमाल करें:

एपीआई मॉनिटरिंग

एपीआई मॉनिटरिंग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:

  1. वाले उपयोगकर्ता के तौर पर, Apigee Edge के यूज़र इंटरफ़ेस (यूआई) में साइन इन करें भूमिका होनी चाहिए.
  2. उस संगठन पर जाएं जिसमें आपको समस्या की जांच करनी है.

  3. विश्लेषण करें > एपीआई मॉनिटरिंग > पेज की जांच करें.
  4. वह समयावधि चुनें जिसमें आपको गड़बड़ियां दिखी थीं.
  5. समय के हिसाब से गड़बड़ी कोड दिखाएं.
  6. वह सेल चुनें जिसमें गड़बड़ी कोड protocol.http.ResponseWithBody है नीचे दी गई जानकारी देखें:

    ( बड़ी इमेज देखें)

  7. आपको गड़बड़ी के कोड के बारे में जानकारी दिखेगी protocol.http.ResponseWithBody जैसा कि नीचे दिखाया गया है:

    ( बड़ी इमेज देखें)

  8. लॉग देखें पर क्लिक करें और फ़ेल हो चुके अनुरोध की पंक्ति को बड़ा करें.

    ( बड़ी इमेज देखें)

  9. लॉग विंडो में जाकर, यह जानकारी देखें:
    • स्टेटस कोड: 502
    • गलत सोर्स: target
    • गलत कोड: protocol.http.ResponseWithBody.
  10. अगर गलत सोर्स की वैल्यू target और Fault है कोड की वैल्यू protocol.http.ResponseWithBody है, इसके बाद बताता है कि गड़बड़ी इसलिए हुई है क्योंकि बैकएंड सर्वर ने इसके साथ 204 No Content या 205 Reset Content स्थिति कोड जवाब का मुख्य हिस्सा और/या संभावित वजहें सेक्शन में देखें.

ट्रेस करने वाला टूल

ट्रेस टूल का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. ट्रेस सेशन चालू करना साथ ही:
    1. 502 Bad Gateway गड़बड़ी आने तक इंतज़ार करें. या
    2. अगर समस्या को दोबारा हल किया जा सकता है, तो एपीआई कॉल करें और 502 Bad Gateway गड़बड़ी देखें.
  2. पक्का करें कि सभी FlowInfos दिखाएं चालू है:

  3. पूरे न हो पाने वाले अनुरोधों में से किसी एक को चुनें और ट्रेस की जांच करें.
  4. ट्रेस के अलग-अलग फ़ेज़ पर नेविगेट करें और गड़बड़ी का पता लगाएं हुआ.
  5. आम तौर पर, आपको flowinfo गड़बड़ी में गड़बड़ी सिर्फ़ टारगेट सर्वर को अनुरोध भेजा गया फ़ेज़ के बाद, जैसा कि नीचे दिखाया गया है:

    स्थिति #1

    स्थिति #1: बैकएंड सर्वर, स्टेटस कोड 204 No Content के साथ जवाब देता है जवाब का मुख्य हिस्सा और/या इसमें दिया गया कोई हेडर शामिल है संभावित वजहें.

    ट्रेस में दी गई इन वैल्यू को नोट करें:

    • गड़बड़ी: Received 204 Response with message body
    • error.class: com.apigee.rest.framework.BadGateway

    स्थिति #2

    स्थिति #2: बैकएंड सर्वर, स्थिति कोड के साथ जवाब देता है 204 No Content में जवाब का मुख्य हिस्सा और/या इनमें से कोई एक संभावित वजहें वाले पेज पर मौजूद हेडर देखें.

    ट्रेस में दी गई इन वैल्यू को नोट करें:

    • गड़बड़ी: Received 205 Response with message body
    • error.class: com.apigee.rest.framework.BadGateway
  6. ट्रेस में, AX (Analytics का डेटा रिकॉर्ड किया गया) फ़ेज़ पर जाएं और उस पर क्लिक करें.
  7. नीचे स्क्रोल करते हुए चरण से जुड़ी जानकारी, गड़बड़ी हेडर सेक्शन पर जाएं और X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू तय करें जैसा कि नीचे दिखाया गया है:

    ( बड़ी इमेज देखें)

  8. ध्यान दें कि X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू are protocol.http.ResponseWithBody और target. इससे पता चलता है कि गड़बड़ी इसलिए हुई है, क्योंकि बैकएंड सर्वर ने 204 No Content या 205 Reset Content स्टेटस कोड रिस्पॉन्स का मुख्य हिस्सा और/या संभावित वजहों में बताए गए किसी हेडर पर.
    गड़बड़ी मान
    X-Apigee-fault-code protocol.http.ResponseWithBody
    X-Apigee-fault-source target

NGINX

NGINX ऐक्सेस लॉग का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. अगर आप निजी Cloud उपयोगकर्ता हैं, तो NGINX ऐक्सेस लॉग का इस्तेमाल इन कामों के लिए किया जा सकता है एचटीटीपी 502 Bad Gateway के बारे में खास जानकारी तय करें.
  2. NGINX ऐक्सेस लॉग देखें:

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

    कहां: ORG, ENV, और PORT# को असल वैल्यू से बदल दिया जाता है.

  3. यह देखने के लिए खोजें कि क्या गड़बड़ी कोड में कोई 502 गड़बड़ी है किसी खास अवधि के दौरान protocol.http.ResponseWithBody (अगर समस्या पहले हुई है) या कोई अनुरोध अब भी पूरा नहीं हो पा रहा है 502.
  4. अगर आपको X-Apigee-fault-code के साथ कोई 502 गड़बड़ी मिलती है protocol.http.ResponseWithBody के मान का मिलान करें, फिर पता लगाएं X-Apigee-fault-source की वैल्यू.

    NGINX ऐक्सेस लॉग में 502 गड़बड़ी का नमूना:

    NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में X- के लिए नीचे दिए गए मान हैं Apigee-fault-code और X-Apigee-fault-source:

    रिस्पॉन्स हेडर मान
    X-Apigee-fault-code protocol.http.ResponseWithBody
    X-Apigee-fault-source target
  5. ध्यान दें कि X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू हैं, तो protocol.http.ResponseWithBody और target. इससे पता चलता है कि गड़बड़ी इसलिए हुई है, क्योंकि बैकएंड सर्वर ने 204 No Content या 205 Reset Content स्टेटस कोड रिस्पॉन्स का मुख्य हिस्सा और/या संभावित वजहों में बताए गए किसी हेडर पर.

वजह: जवाब का मुख्य हिस्सा या बैकएंड सर्वर से 204 रिस्पॉन्स वाले हेडर

संक्रमण की जांच

  1. एपीआई का इस्तेमाल करके मिली गड़बड़ी के लिए, गलत कोड और गलत सोर्स का पता लगाएं मॉनिटरिंग, ट्रेस करने वाले टूल या NGINX ऐक्सेस लॉग के बारे में ज़्यादा जानकारी यहां दी गई है गड़बड़ी की जानकारी पाने के सामान्य तरीके.
  2. अगर गलत कोड protocol.http.ResponseWithBody है और गलत सोर्स की वैल्यू target है, तो इससे पता चलता है कि बैकएंड सर्वर ने 204 No Content या 205 Reset Content स्थिति के साथ जवाब दिया है जवाब के मुख्य हिस्से और/या इसमें बताए गए किसी हेडर के साथ कोड संभावित वजहें.
  3. यह पुष्टि करने के लिए कि बैकएंड सर्वर ने वाकई रिस्पॉन्स पेलोड बॉडी और/या एक भेजा है या नहीं संभावित वजहों में बताए गए या ज़्यादा हेडर के साथ, यह तरीका अपनाएं:

    1. अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं और अगर आपके पास सीधे आपके किसी भी सिस्टम से बैकएंड सर्वर पर काम करता है.

    2. अगर आप निजी क्लाउड उपयोगकर्ता हैं, तो किसी खास मैसेज प्रोसेसर से सीधे तौर पर जुड़ा बैकएंड सर्वर गड़बड़ी का पता चलता है.
    3. बैकएंड सर्वर से मिले जवाब की समीक्षा करें और पुष्टि करें कि उसमें रिस्पॉन्स पेलोड बॉडी और/या ऊपर बताए गए एक या एक से ज़्यादा हेडर के साथ. अगर हां, तो की वजह.

      सैंपल #1

      सैंपल #1: कॉन्टेंट-एन्कोडिंग हेडर के साथ बैकएंड सर्वर रिस्पॉन्स 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
      

      इस सैंपल में, बैकएंड सर्वर ने इसके साथ जवाब दिया 204 No Content स्टेटस कोड और Content-Encoding: gzip

      सैंपल #2

      सैंपल #2: कॉन्टेंट की लंबाई वाले हेडर के साथ बैकएंड सर्वर रिस्पॉन्स 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
      

      इस सैंपल में, बैकएंड सर्वर ने इसके साथ जवाब दिया 204 No Content स्टेटस कोड और Content-Length: 48

      सैंपल #3

      सैंपल #3: रिस्पॉन्स के मुख्य हिस्से के साथ बैकएंड सर्वर रिस्पॉन्स 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
      

      इस सैंपल में, बैकएंड सर्वर ने इसके साथ जवाब दिया जवाब के मुख्य हिस्से के साथ 205 Reset Content स्टेटस कोड This is a sample Response.

    4. ऊपर दिए गए सभी उदाहरणों में, बैकएंड सर्वर ने 204 No Content या जवाब का मुख्य हिस्सा और/या कोई एक हेडर के साथ 205 Reset Content स्टेटस कोड संभावित वजहों में बताया गया है.
    5. इसलिए, Apigee Edge ने गड़बड़ी के कोड के साथ 502 Bad Gateway स्टेटस कोड भेजा है protocol.http.ResponseWithBody.

रिज़ॉल्यूशन

पक्का करें कि बैकएंड सर्वर हमेशा इस स्पेसिफ़िकेशन का पालन करता हो 204 No Content भेजते समय, आरएफ़सी 7231, सेक्शन 6.3.6: 205 कॉन्टेंट रीसेट करना या Apigee Edge के लिए 205 Reset Content जवाब है. इसका मतलब है कि बैकएंड सर्वर 204 No Content के हिस्से के तौर पर, यह जानकारी नहीं भेजना चाहिए या 205 Reset Content जवाब:

  1. रिस्पॉन्स पेलोड बॉडी
  2. इनमें से कोई भी हेडर:
    1. Content-Length
    2. Content-Encoding
    3. Transfer-Encoding

खास जानकारी

Apigee Edge, 502 Bad Gateway स्टेटस कोड और गड़बड़ी कोड के साथ जवाब देता है protocol.http.ResponseWithBody अगर बैकएंड सर्वर किसी 204 No Content या 205 Reset Content जवाब मिला, लेकिन आरएफ़सी के इन निर्देशों का पालन नहीं करता:

खास जानकारी
आरएफ़सी 7231, सेक्शन 6.3.5: 204 कोई कॉन्टेंट नहीं
आरएफ़सी 7231, सेक्शन 6.3.6: 205 कॉन्टेंट रीसेट करना

इन बातों का ध्यान रखें

हमारा सुझाव है कि 204 No Content भेजने के लिए, बैकएंड सर्वर को ठीक करें और 205 Reset Content स्टेटस कोड, जिसमें जवाब का मुख्य हिस्सा और इनमें से कोई भी कोड मौजूद नहीं है हेडर - Content-Length, Content-Encoding, और Transfer-Encoding और निर्देशों का पालन करें आरएफ़सी 7231, सेक्शन 6.3.5: 204 कोई कॉन्टेंट नहीं और आरएफ़सी 7231, सेक्शन 6.3.6: 205 कॉन्टेंट रीसेट करें.

अगर आपको अब भी Apigee की सहायता टीम से कोई मदद चाहिए, तो यहां जाएं गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है.

ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है

गड़बड़ी की नीचे दी गई जानकारी इकट्ठा करें. इसके बाद, Apigee Edge की सहायता टीम से संपर्क करें:

अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:

  • संगठन का नाम
  • परिवेश का नाम
  • एपीआई प्रॉक्सी का नाम
  • 502 गड़बड़ी को ठीक करने के लिए इस्तेमाल किए गए curl निर्देश को पूरा करें
  • एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें

अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:

  • पूरे न हो पाने वाले अनुरोधों की वजह से, गड़बड़ी का पूरा मैसेज मिला
  • परिवेश का नाम
  • एपीआई प्रॉक्सी बंडल
  • एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें
  • NGINX ऐक्सेस लॉग /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    कहां: ORG, ENV और PORT# को इससे बदल दिया गया है सेट करें.

  • मैसेज प्रोसेसर के सिस्टम लॉग /opt/apigee/var/log/edge-message-processor/logs/system.log