502 गलत गेटवे - responseWithBody

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

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

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

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

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

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 Content205 Reset Content Content-Length, Content-Encoding या Transfer-Encoding जैसे रिस्पॉन्स हेडर, रिस्पॉन्स पेलोड का साइज़, टाइप या फ़ॉर्मैट दिखाते हैं.

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

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

Content-Length हेडर

(शून्य से सेट नहीं करें)

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

Content-Encoding

(यह सेटिंग Apigee Edge में काम करने वाली एन्कोडिंग पर सेट है)

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

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

वजह ब्यौरा समस्या हल करने के लिए निर्देश
बैकएंड सर्वर से 204 रिस्पॉन्स वाले रिस्पॉन्स का मुख्य हिस्सा या हेडर बैकएंड सर्वर, रिस्पॉन्स बॉडी और/या एक या एक से ज़्यादा हेडर Content-Type, Content-Encoding या Transfer-Encoding के साथ 204 No Content या 205 Reset Content रिस्पॉन्स भेजता है. 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 है और गलत कोड की वैल्यू 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. अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो एचटीटीपी 502 Bad Gateway के बारे में अहम जानकारी तय करने के लिए, NGINX ऐक्सेस लॉग का इस्तेमाल किया जा सकता है.
  2. NGINX ऐक्सेस लॉग देखें:

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

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

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

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

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

रिज़ॉल्यूशन

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

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

खास जानकारी

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

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

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

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

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

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

ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी यह जानकारी इकट्ठा करें और Apigee Edge की सहायता टीम से संपर्क करें:

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

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

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

  • असफल अनुरोधों के लिए देखा गया पूरा गड़बड़ी का मैसेज
  • परिवेश का नाम
  • एपीआई प्रॉक्सी बंडल
  • एपीआई अनुरोधों के लिए ट्रेस फ़ाइल
  • 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