502 गलत गेटवे - हेडर के बिना जवाब 405

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

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

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

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

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

HTTP/1.1 502 Bad Gateway

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

{
   "fault":{
      "faultstring":"Received 405 Response without Allow Header",
      "detail":{
         "errorcode":"protocol.http.Response405WithoutAllowHeader"
      }
   }
}

संभावित कारण

यह गड़बड़ी तब होती है, जब बैकएंड सर्वर 405 Method Not Allowed स्थिति के साथ जवाब देता है Allow हेडर के बिना कोड.

स्पेसिफ़िकेशन के मुताबिक RFC 7231, सेक्शन 6.5.5: 405 तरीके की अनुमति नहीं है, तो ऑरिजिन सर्वर के लिए उम्मीद की जाती है 405 के जवाब में Allow हेडर फ़ील्ड जनरेट करना और भेजना ज़रूरी है मौजूदा टारगेट रिसॉर्स के लिए इस्तेमाल किए जा सकने वाले तरीकों की सूची. अगर ऐसा नहीं है, तो Apigee 502 Bad Gateway और गड़बड़ी कोड protocol.http.Response405WithoutAllowHeader.

वजह ब्यौरा इसके लिए लागू होने वाले, समस्या हल करने के निर्देश
बैकएंड सर्वर से हेडर की अनुमति के बिना 405 रिस्पॉन्स एपीआई अनुरोध को प्रोसेस करने वाला बैकएंड सर्वर, Allow हेडर के बिना 405 स्टेटस कोड के साथ रिस्पॉन्स देता है. Edge के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता

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

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

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

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

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

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

  6. वह सेल चुनें जिसमें गड़बड़ी का कोड है protocol.http.Response405WithoutAllowHeader जैसा कि नीचे दिखाया गया है:

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

  8. लॉग देखें पर क्लिक करें और ज़्यादा जानकारी देखने के लिए, पूरे न हो पाने वाले अनुरोधों में से किसी एक को बड़ा करें.

  9. लॉग विंडो में जाकर, यह जानकारी देखें:
    • स्टेटस कोड: 502
    • गलत सोर्स: target
    • गलत कोड: protocol.http.Response405WithoutAllowHeader.
  10. अगर गलत सोर्स target है और गलत कोड protocol.http.Response405WithoutAllowHeader है, तो इससे पता चलता है कि बैकएंड सर्वर ने 405 Method Not Allowed स्थिति कोड के साथ Allow हेडर.

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

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

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

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

  6. ट्रेस में गड़बड़ी की वैल्यू नोट करें.

    ऊपर दिया गया सैंपल ट्रेस, गड़बड़ी को Received 405 Response without Allow Header के तौर पर दिखाता है. बैकएंड पर अनुरोध भेजे जाने के बाद, Apigee ने गड़बड़ी की जानकारी दी है सर्वर से पता चलता है कि बैकएंड सर्वर ने 405 रिस्पॉन्स स्टेटस कोड भेजा है Allow हेडर के बिना.

  7. ट्रेस में AX (Analytics डेटा रिकॉर्ड किया गया) चरण पर जाएं और उस पर क्लिक करें.
  8. चरण की जानकारी में नीचे की ओर स्क्रोल करके, गड़बड़ी / रिस्पॉन्स हेडर सेक्शन पर जाएं पैनल को जांच सकता है और X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू, जैसा कि यहां दिखाया गया है:

  9. आपको X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू इस तरह दिखेंगी protocol.http.Response405WithoutAllowHeader और targetकान में, से पता चल रहा है कि यह गड़बड़ी इसलिए हुई है, क्योंकि बैकएंड ने Allow हेडर के बिना 405 रिस्पॉन्स स्टेटस कोड.
    रिस्पॉन्स हेडर मान
    X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
    X-Apigee-fault-source target

NGINX

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

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

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

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

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

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

    NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में X-Apigee- के लिए ये वैल्यू हैं गड़बड़ी का कोड और X-Apigee-fault-source:

    रिस्पॉन्स हेडर मान
    X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
    X-Apigee-fault-source target

वजह: बैकएंड सर्वर से हेडर की अनुमति के बिना 405 रिस्पॉन्स

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

  1. 502 Bad Gateway के लिए, गलत कोड और गलत सोर्स की पहचान करें एपीआई मॉनिटरिंग, ट्रेस टूल या NGINX ऐक्सेस लॉग का इस्तेमाल करके, जैसा कि यहां बताया गया है डाइग्नोस्टिक्स के सामान्य तरीके.
  2. अगर गलत कोड protocol.http.Response405WithoutAllowHeader है और गड़बड़ी के सोर्स की वैल्यू target है. इससे पता चलता है कि बैकएंड सर्वर में ने Allow हेडर के बिना 405 स्टेटस कोड के साथ जवाब दिया. इसलिए, Apigee, जवाब देने के लिए गड़बड़ी कोड के साथ 502 Bad Gateway देता है protocol.http.Response405WithoutAllowHeader.

रिज़ॉल्यूशन

समस्या हल करने के लिए इनमें से किसी एक तरीके का इस्तेमाल करें:

बैकएंड सर्वर

विकल्प #1: 'अनुमति दें' हेडर के साथ 405 स्टेटस कोड भेजने के लिए, बैकएंड सर्वर को ठीक करें:

  1. पक्का करें कि बैकएंड सर्वर हमेशा इन निर्देशों का पालन करता हो आरएफ़सी 7231, सेक्शन 6.5.5: 405 मेथड की अनुमति नहीं है और इसे 405 स्टेटस के साथ भेजा जाता है Allow हेडर के हिस्से के तौर पर स्वीकार किए गए तरीकों की सूची शामिल करके कोड जैसा कि नीचे दिखाया गया है:

    Allow: HTTP_METHODS
    
  2. उदाहरण के लिए, अगर आपका बैकएंड सर्वर GET, POST और HEAD तरीके का इस्तेमाल किया है, तो आपको यह पक्का करना होगा कि Allow हेडर में इस तरह दिखेगी:
    Allow: GET, POST, HEAD
    

गड़बड़ी ठीक करना

विकल्प #2: अपने एपीआई के 'अनुमति दें' हेडर के साथ 405 स्टेटस कोड भेजने के लिए, गड़बड़ी को मैनेज करने की सुविधा का इस्तेमाल करें प्रॉक्सी:

अगर बैकएंड सर्वर, Allow के बिना 405 स्टेटस कोड दिखाता है हेडर है, तो आप 405 स्थिति कोड और आपके एपीआई प्रॉक्सी से इस तरह Allow हेडर:

  1. इस तरह की नीति बनाएं assignMessage की नीति या RaiseFault की नीति पढ़ें और Allow हेडर और कस्टम405 दिखाई देगा.

    'अनुमति दें' हेडर के साथ 405 भेजने के लिए, AllowMessage नीति का सैंपल:

    <AssignMessage async="false" continueOnError="false" enabled="true" name="AM-405WithAllowHeader">
        <DisplayName>AM-405WithAllowHeader</DisplayName>
        <Set>
            <Payload contentType="application/json">{"Specified method is not allowed. Please use one of the methods mentioned in the Allow header."}</Payload>
            <StatusCode>405</StatusCode>
            <ReasonPhrase>Method Not Allowed</ReasonPhrase>
        </Set>
        <Add>
            <Headers>
                <Header name="Allow">GET, POST, HEAD</Header>
            </Headers>
        </Add>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
    
  2. TargetEndpoint में ऐसा FaultRule बनाएं जो नीति को शुरू करता हो गड़बड़ी कोड के साथ 502 गड़बड़ी मिलने पर protocol.http.Response405WithoutAllowHeader.

    FultRule को दिखाने वाला TargetEndpoint कॉन्फ़िगरेशन का सैंपल:

    <TargetEndpoint name="default">
    ...
        <FaultRules>
           <FaultRule name="405WithoutAllowHeader">
                <Step>
                    <Name>AM-405WithAllowHeader</Name>
                </Step>
                <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition>
            </FaultRule>
        </FaultRules>
    
  3. इन बदलावों को अपने एपीआई प्रॉक्सी के नए वर्शन में सेव करें और वर्शन को डिप्लॉय करें.
  4. एपीआई कॉल करें और पुष्टि करें कि आपको405 Allow हेडर.

प्रॉपर्टी कॉन्फ़िगर करें

विकल्प #3: Apigee Edge को रोकने के लिए, मैसेज प्रोसेसर में प्रॉपर्टी को कॉन्फ़िगर करना 502 कोड वाला गड़बड़ी का मैसेज दिख रहा है

  1. अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो आपके पास प्रॉपर्टी को अपडेट करने का विकल्प होता है Apigee Edge को रोकने के लिए, HTTP.ignore.allow_header.for.405 से true पर स्विच करें 502 गड़बड़ी दिखाना, भले ही बैकएंड सर्वर 405 की मदद से जवाब दे 'कैसे करें' गाइड का इस्तेमाल करके Allow हेडर के बिना स्थिति कोड: 'मैसेज प्रोसेसर' में 405 प्रॉपर्टी के लिए, अनदेखा करने की सुविधा को कॉन्फ़िगर करने से, हेडर को अनुमति मिलती है.
  2. अगर आप पब्लिक क्लाउड उपयोगकर्ता हैं, तो कृपया Apigee Edge की सहायता टीम से संपर्क करें

खास जानकारी

Apigee, बैकएंड सर्वर से 405 Method Not Allowed रिस्पॉन्स की उम्मीद करता है और नीचे दी गई खास जानकारी के मुताबिक Allow हेडर का इस्तेमाल करें:

खास जानकारी
आरएफ़सी 7231, सेक्शन 6.5.5: 405 वाले तरीके की अनुमति नहीं है
आरएफ़सी 7231, सेक्शन 7.4.1: अनुमति दें

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

हमारा सुझाव है कि आप बैकएंड सर्वर को ठीक करें, ताकि 405 स्टेटस कोड भेजा जा सके Allow हेडर के साथ निर्देशों का पालन करें. आरएफ़सी 7231, सेक्शन 6.5.5: 405 वाले तरीके की अनुमति नहीं है.

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

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

अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो यह जानकारी इकट्ठा करें और उसके बाद Apigee Edge सहायता से संपर्क करें.

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

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

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

  • पूरे न हो पाने वाले अनुरोधों की वजह से, गड़बड़ी का पूरा मैसेज मिला
  • परिवेश का नाम
  • एपीआई प्रॉक्सी बंडल
  • एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें
  • NGINX ऐक्सेस लॉग

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

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

  • मैसेज प्रोसेसर के सिस्टम लॉग
    /opt/apigee/var/log/edge-message-processor/logs/system.log
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

रेफ़रंस

Apigee में गड़बड़ियों को ठीक करना