Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
समस्या का ब्यौरा
क्लाइंट ऐप्लिकेशन को एपीआई कॉल के रिस्पॉन्स के तौर पर, गड़बड़ी कोड protocol.http.Response405WithoutAllowHeader
के साथ 502 Bad Gateway
का एचटीटीपी स्टेटस कोड मिलता है.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 502 Bad Gateway
इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:
{ "fault":{ "faultstring":"Received 405 Response without Allow Header", "detail":{ "errorcode":"protocol.http.Response405WithoutAllowHeader" } } }
संभावित कारण
यह गड़बड़ी तब होती है, जब बैकएंड सर्वर, Allow
हेडर के बिना 405 Method Not Allowed
स्टेटस कोड के साथ जवाब देता है.
आरएफ़सी 7231 के सेक्शन 6.5.5: 405 तरीके की अनुमति नहीं है के मुताबिक, यह उम्मीद की जाती है कि मूल सर्वर को 405
के रिस्पॉन्स में Allow
हेडर फ़ील्ड जनरेट करके भेजना चाहिए. इसमें टारगेट रिसॉर्स के उन तरीकों की सूची शामिल होनी चाहिए जिनका फ़िलहाल इस्तेमाल किया जा सकता है. अगर ऐसा नहीं है, तो Apigee
502 Bad Gateway
और गड़बड़ी कोड protocol.http.Response405WithoutAllowHeader
के साथ जवाब देता है.
वजह | ब्यौरा | समस्या हल करने के लिए निर्देश |
---|---|---|
बैकएंड सर्वर से हेडर की अनुमति के बिना 405 रिस्पॉन्स | एपीआई अनुरोध को प्रोसेस करने वाला बैकएंड सर्वर, Allow हेडर के बिना 405 स्टेटस कोड दिखाता है. |
Edge के सार्वजनिक और निजी क्लाउड के उपयोगकर्ता |
निदान के सामान्य चरण
इस गड़बड़ी का पता लगाने के लिए, नीचे दिए गए किसी टूल/तकनीक का इस्तेमाल करें:
एपीआई मॉनिटरिंग
एपीआई मॉनिटरिंग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:
- सही भूमिका वाले उपयोगकर्ता के तौर पर, Edge यूज़र इंटरफ़ेस (यूआई) में लॉग इन करें.
उस संगठन पर जाएं जिसमें आपको समस्या की जांच करनी है.
- विश्लेषण करें > एपीआई की निगरानी करना > जांच करें पेज पर जाएं.
- वह खास समयसीमा चुनें जिसमें आपने गड़बड़ियां देखी थीं.
समय के हिसाब से गलत कोड प्लॉट करें.
वह सेल चुनें जिसमें गड़बड़ी कोड
protocol.http.Response405WithoutAllowHeader
है, जैसा कि नीचे दिखाया गया है:गड़बड़ी कोड
protocol.http.Response405WithoutAllowHeader
के बारे में जानकारी नीचे दिखाई गई है:लॉग देखें पर क्लिक करें और ज़्यादा जानकारी देखने के लिए, फ़ेल हो चुके किसी एक अनुरोध को बड़ा करें.
- लॉग विंडो से, नीचे दी गई जानकारी पर ध्यान दें:
- स्थिति कोड:
502
- गलत इस्तेमाल का सोर्स:
target
- गलत कोड:
protocol.http.Response405WithoutAllowHeader
.
- स्थिति कोड:
- अगर गलत सोर्स
target
है और फ़ॉल कोडprotocol.http.Response405WithoutAllowHeader
है, तो इससे पता चलता है कि बैकएंड सर्वर नेAllow
हेडर के बिना,405 Method Not Allowed
स्टेटस कोड के साथ जवाब दिया.
ट्रेस टूल
ट्रेस टूल का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:
-
ट्रेस सेशन को चालू करें या फिर
502 Bad Gateway
गड़बड़ी आने तक इंतज़ार करें या- अगर फिर से समस्या दिख रही है, तो उसे एपीआई कॉल करें -
502 Bad Gateway
गड़बड़ी
पक्का करें कि FlowInfos दिखाएं चालू है:
- सफल न होने वाले अनुरोधों में से किसी एक को चुनें और ट्रेस की जांच करें.
- ट्रेस के अलग-अलग फ़ेज़ में नेविगेट करें और पता लगाएं कि गड़बड़ी कहां हुई थी.
आम तौर पर, यह गड़बड़ी टारगेट सर्वर को अनुरोध भेजे जाने के बाद वाले फ़्लो में दिखेगी, जैसा कि यहां दिखाया गया है:
ट्रेस में से गड़बड़ी की वैल्यू नोट करें.
ऊपर दिया गया सैंपल ट्रेस, गड़बड़ी को
Received 405 Response without Allow Header
के तौर पर दिखाता है. अनुरोध भेजने के बाद, Apigee की ओर से बैकएंड सर्वर पर गड़बड़ी होने की जानकारी मिलती है. इससे पता चलता है कि बैकएंड सर्वर नेAllow
हेडर के बिना,405
रिस्पॉन्स स्टेटस कोड भेजा.- ट्रेस में AX (Analytics डेटा रिकॉर्ड किया गया) फ़ेज़ पर जाएं और उस पर क्लिक करें.
चरण का ब्यौरा पैनल में गड़बड़ी / रिस्पॉन्स हेडर सेक्शन तक नीचे स्क्रोल करें और नीचे दिखाए गए तरीके से X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू तय करें:
- आपको 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 ऐक्सेस लॉग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:
- अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो आपके पास NGINX ऐक्सेस लॉग का इस्तेमाल करके, एचटीटीपी
502
की गड़बड़ियों के बारे में अहम जानकारी तय करने का विकल्प होता है. NGINX ऐक्सेस लॉग देखें:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
कहां: ORG, ORG, और PORT# को असल वैल्यू से बदल दिया जाता है.
- यह देखें कि किसी खास अवधि (अगर समस्या पहले हुई हो) के दौरान, गड़बड़ी कोड
protocol.http.Response405WithoutAllowHeader
वाली कोई502
गड़बड़ी तो नहीं है या502
से जुड़े ऐसे अनुरोध हैं जो अब भी पूरे नहीं हो पा रहे हैं. अगर आपको 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 रिस्पॉन्स
संक्रमण की जांच
- एपीआई मॉनिटरिंग, ट्रेस टूल या NGINX ऐक्सेस लॉग का इस्तेमाल करके,
502 Bad Gateway
के लिए गलत कोड और गलत सोर्स का पता लगाएं. गड़बड़ी की जानकारी पाने के सामान्य तरीके देखें. - अगर गलत कोड
protocol.http.Response405WithoutAllowHeader
है और गड़बड़ी सोर्स की वैल्यूtarget
है, तो इससे पता चलता है कि बैकएंड सर्वर नेAllow
हेडर के बिना,405
स्टेटस कोड के साथ जवाब दिया है. इसलिए, Apigee, गड़बड़ी कोडprotocol.http.Response405WithoutAllowHeader
के साथ502 Bad Gateway
के साथ जवाब देता है.
रिज़ॉल्यूशन
इस समस्या को हल करने के लिए, इनमें से कोई एक तरीका अपनाएं:
बैकएंड सर्वर
पहला विकल्प: 'अनुमति दें' हेडर के साथ 405 स्टेटस कोड भेजने के लिए, बैकएंड सर्वर को ठीक करें:
पक्का करें कि बैकएंड सर्वर हमेशा इन स्पेसिफ़िकेशन के मुताबिक हो: आरएफ़सी 7231, सेक्शन 6.5.5: 405 तरीके की अनुमति नहीं है. साथ ही, यह
Allow
हेडर के हिस्से के तौर पर इस्तेमाल किए जा सकने वाले तरीकों की सूची शामिल करके,405
स्टेटस कोड के साथ भेजता है:Allow: HTTP_METHODS
- उदाहरण के लिए, अगर आपका बैकएंड सर्वर
GET
,POST
, औरHEAD
तरीकों का इस्तेमाल करने की अनुमति देता है, तो आपको यह पक्का करना होगा किAllow
हेडर में वे इस तरह से शामिल हों:Allow: GET, POST, HEAD
गड़बड़ी ठीक करना
दूसरा विकल्प: अपने एपीआई प्रॉक्सी के 'अनुमति दें' हेडर के साथ 405 स्टेटस कोड भेजने के लिए, फ़ॉल्ट हैंडलिंग का इस्तेमाल करें:
अगर बैकएंड सर्वर, Allow
हेडर के बिना 405
स्टेटस कोड दिखाता है, तो गड़बड़ी को हैंडल करने के तरीके का इस्तेमाल करके, 405
स्टेटस कोड और एपीआई प्रॉक्सी से Allow
हेडर की मदद से, इस तरीके का इस्तेमाल किया जा सकता है:
कोई नीति बनाएं, जैसे कि assignMessage नीति या Refault नीति और स्टेटस कोड को
Allow
हेडर और पसंद के मुताबिक मैसेज की मदद से405
पर सेट करें.अनुमति दें हेडर के साथ 405 भेजने के लिए सैंपल AssignmentsMessage नीति:
<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>
TargetEndpoint
में ऐसाFaultRule
बनाएं जो गड़बड़ी कोडprotocol.http.Response405WithoutAllowHeader
के साथ502
गड़बड़ी मिलने पर, नीति को शुरू करता हो.FultTerms के बारे में जानकारी देने वाले टारगेट एंडपॉइंट कॉन्फ़िगरेशन का सैंपल:
<TargetEndpoint name="default"> ... <FaultRules> <FaultRule name="405WithoutAllowHeader"> <Step> <Name>AM-405WithAllowHeader</Name> </Step> <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition> </FaultRule> </FaultRules>
- इन बदलावों को अपने एपीआई प्रॉक्सी के एक नए वर्शन में सेव करें और बदलाव लागू करें.
- एपीआई कॉल करें और पुष्टि करें कि आपको
Allow
हेडर के साथ405
स्टेटस कोड मिल रहा है या नहीं.
प्रॉपर्टी कॉन्फ़िगर करें
तीसरा विकल्प: मैसेज प्रोसेसर में प्रॉपर्टी को कॉन्फ़िगर करें, ताकि Apigee Edge को 502 गड़बड़ी दिखने से रोका जा सके
- अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो Apigee Edge को
502
की गड़बड़ी होने से रोकने के लिए,HTTP.ignore.allow_header.for.405
प्रॉपर्टी कोtrue
पर अपडेट करें. ऐसा तब भी किया जा सकता है, जब बैकएंड सर्वर, 'इस्तेमाल करने का तरीका' गाइड का इस्तेमाल करके,Allow
हेडर के बिना405
स्टेटस कोड के साथ जवाब दे: Message प्रोसेसर में 405 प्रॉपर्टी के लिए हेडर को अनदेखा करने की अनुमति को कॉन्फ़िगर करने की सुविधा. - अगर आप Public Cloud का इस्तेमाल करते हैं, तो कृपया Apigee Edge की सहायता टीम से संपर्क करें
खास जानकारी
Apigee को यहां बताए गए निर्देशों के मुताबिक, बैकएंड सर्वर के साथ-साथ Allow
हेडर से 405 Method Not Allowed
रिस्पॉन्स मिलने की उम्मीद है:
खास जानकारी | |
---|---|
आरएफ़सी 7231, सेक्शन 6.5.5: 405 तरीके की अनुमति नहीं है | |
आरएफ़सी 7231, सेक्शन 7.4.1: अनुमति दें |
इन बातों का ध्यान रखें
इसका सुझाव दिया जाता है कि बैकएंड सर्वर को ठीक करें, ताकि Allow
हेडर के साथ 405
स्टेटस कोड भेजा जा सके. साथ ही,
आरएफ़सी 7231, सेक्शन 6.5.5: 405 तरीके की अनुमति नहीं है का पालन करें.
अगर आपको अब भी Apigee सहायता से कोई मदद चाहिए, तो गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है पर जाएं.
ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करनी होगी
अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो गड़बड़ी से जुड़ी यह जानकारी इकट्ठा करें. इसके बाद, Apigee Edge की सहायता टीम से संपर्क करें.
अगर आप Public Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
- पूरे
curl
निर्देश का इस्तेमाल गड़बड़ी कोडprotocol.http.Response405WithoutAllowHeader
के साथ502 Bad Gateway
को फिर से बनाने के लिए किया गया - एपीआई अनुरोधों के लिए ट्रेस फ़ाइल
अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो यह जानकारी दें:
- असफल अनुरोधों के लिए देखा गया पूरा गड़बड़ी का मैसेज
- परिवेश का नाम
- एपीआई प्रॉक्सी बंडल
- एपीआई अनुरोधों के लिए ट्रेस फ़ाइल
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