আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
সমস্যার উপসর্গ
API কলের উত্তর হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশন 502 Bad Gateway HTTP স্ট্যাটাস কোড সহ সমস্যা
কোড protocol.http.Response405WithoutAllowHeader পায়।
সমস্যা সংক্রান্ত মেসেজ
ক্লায়েন্ট অ্যাপ্লিকেশন নিম্নলিখিত রেসপন্স কোড পায়:
HTTP/1.1 502 Bad Gateway
এছাড়াও, আপনি নিম্নলিখিত সমস্যার মেসেজ দেখতে পেতে পারেন:
{
"fault":{
"faultstring":"Received 405 Response without Allow Header",
"detail":{
"errorcode":"protocol.http.Response405WithoutAllowHeader"
}
}
}সম্ভাব্য কারণ
Allow হেডার ছাড়া ব্যাকএন্ড সার্ভার 405 Method Not Allowed স্ট্যাটাস
কোড দিয়ে উত্তর দিলে এই সমস্যা হয়।
স্পেসিফিকেশন
RFC 7231, বিভাগ 6.5.5: 405 Method Not Allowed অনুযায়ী, এটি আশা করা হয় যে অরিজিন সার্ভারকে
405 উত্তরের মধ্যে Allow হেডার ফিল্ড তৈরি ও পাঠাতে হবে, যার মধ্যে
টার্গেট রিসোর্সের বর্তমানে কাজ করে এমন পদ্ধতির তালিকা থাকবে। তা না হলে, Apigee
502 Bad Gateway ও সমস্যা কোড protocol.http.Response405WithoutAllowHeader সহ উত্তর দেয়।
| কারণ | বিবরণ | এর জন্য প্রযোজ্য সমস্যার সমাধান সংক্রান্ত নির্দেশাবলী |
|---|---|---|
| ব্যাকএন্ড সার্ভার থেকে Allow হেডার ছাড়া 405 রেসপন্স | API অনুরোধ প্রসেস করা ব্যাকএন্ড সার্ভার Allow হেডার ছাড়া 405 স্ট্যাটাস কোড সহ উত্তর দেয়। |
এজ পাবলিক ও প্রাইভেট ক্লাউড ব্যবহারকারী |
সাধারণ ডায়াগনসিস ধাপ
এই সমস্যা ডায়াগনসিস করতে নিম্নলিখিত টুল/টেকনিকের মধ্যে একটি ব্যবহার করুন:
API মনিটরিং
API মনিটরিং ব্যবহার করে সমস্যার ডায়াগনসিস করতে:
- উপযুক্ত ভূমিকা সহ ব্যবহারকারী হিসেবে Edge UI-তে লগ-ইন করুন।
যে প্রতিষ্ঠানে সমস্যাটি তদন্ত করতে চান সেটিতে পরিবর্তন করুন।
- বিশ্লেষণ করুন > API মনিটরিং > তদন্ত করুন পৃষ্ঠায় নেভিগেট করুন।
- আপনি যে নির্দিষ্ট সময়সীমার মধ্যে সমস্যাটি লক্ষ্য করেছেন সেটি বেছে নিন।
সময় অনুযায়ী সমস্যার কোড প্লট করুন।
এমন একটি সেল বেছে নিন যেখানে ফল্ট কোড
protocol.http.Response405WithoutAllowHeaderরয়েছে, যেমন নিচে দেখানো হয়েছে:
নিচে দেখানো পদ্ধতিতে ফল্ট কোড
protocol.http.Response405WithoutAllowHeaderসম্পর্কিত তথ্য দেখানো হয়:
লগ দেখুন বিকল্পে ক্লিক করুন এবং আরও তথ্য দেখতে ব্যর্থ অনুরোধগুলির মধ্যে একটি বড় করে দেখুন।
- লগ উইন্ডো থেকে, নিম্নলিখিত বিবরণগুলি নোট করুন:
- স্ট্যাটাস কোড:
502 - সমস্যার সোর্স:
target - সমস্যার কোড:
protocol.http.Response405WithoutAllowHeader.
- স্ট্যাটাস কোড:
- সমস্যার সোর্স
targetহলে এবং সমস্যার কোডprotocol.http.Response405WithoutAllowHeaderহলে, এর অর্থ হল ব্যাকএন্ড সার্ভারAllowহেডার ছাড়া405 Method Not Allowedস্ট্যাটাস কোড দিয়ে উত্তর দিয়েছে।
ট্রেস টুল
Trace টুল ব্যবহার করে সমস্যার ডায়াগনসিস করতে:
-
ট্রেস সেশন চালু করুন এবং হয়
502 Bad Gatewayসমস্যার জন্য অপেক্ষা করুন অথবা- আপনি যদি সমস্যাটি আবার তৈরি করতে পারেন, তাহলে সমস্যাটি আবার তৈরি করতে API কল করুন -
502 Bad Gatewayসমস্যা
সব FlowInfo দেখুন বিকল্প চালু আছে কিনা দেখুন:
- কাজ না করা অনুরোধগুলির মধ্যে একটি বেছে নিন এবং ট্রেস পরীক্ষা করুন।
- ট্রেসের বিভিন্ন ফেজ নেভিগেট করুন এবং কোথায় সমস্যা হয়েছে তা খুঁজে বের করুন।
আপনি সাধারণত টার্গেট সার্ভারে অনুরোধ পাঠানো হয়েছে ফেজের পরে ফ্লোতে সমস্যাটি দেখতে পাবেন, যেমন নিচে দেখানো হয়েছে:
ট্রেস থেকে পাওয়া ত্রুটির ভ্যালু নোট করুন।
উপরের নমুনা ট্রেসে সমস্যাটি
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.Response405WithoutAllowHeaderX-Apigee-fault-source target
NGINX
NGINX অ্যাক্সেস লগ ব্যবহার করে সমস্যার ডায়াগনসিস করতে:
- আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, HTTP
502সমস্যা সম্পর্কে মূল তথ্য নির্ধারণ করতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারবেন। NGINX অ্যাক্সেস লগ চেক করুন:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
কোথায়: ORG, ORG এবং PORT#-এর জায়গায় আসল ভ্যালু বসাতে হবে।
- নির্দিষ্ট সময়সীমার মধ্যে (যদি
সমস্যাটি আগে ঘটে থাকে)
502সমস্যার কোডprotocol.http.Response405WithoutAllowHeaderসহ কোনও সমস্যা আছে কিনা তা সার্চ করে দেখুন অথবা এখনও কোনও অনুরোধ ব্যর্থ হচ্ছে কিনা তা502দেখুন। আপনি যদি
protocol.http.Response405WithoutAllowHeader-এর ভ্যালুর সাথে ম্যাচ করা X-Apigee-fault-code সহ কোনও502সমস্যা খুঁজে পান, তাহলে X-Apigee-fault-source-এর ভ্যালু নির্ধারণ করুন।NGINX অ্যাক্সেস লগ থেকে 502 সমস্যার নমুনা:
NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিতে X-Apigee- fault-code ও X-Apigee-fault-source-এর জন্য নিম্নলিখিত ভ্যালু আছে:
রেসপন্স হেডার ভ্যালু X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source target
কারণ: ব্যাকএন্ড সার্ভার থেকে Allow হেডার ছাড়া 405 উত্তর
ডায়াগনসিস
502 Bad Gateway-এর জন্য সমস্যার কোড ও সমস্যার সোর্স নির্ধারণ করুন। সমস্যার সাধারণ ডায়াগনসিস সংক্রান্ত ধাপ নিবন্ধে যেভাবে ব্যাখ্যা করা হয়েছে, সেইভাবে API মনিটরিং, ট্রেস টুল বা NGINX অ্যাক্সেস লগ ব্যবহার করুন।- সমস্যা কোড
protocol.http.Response405WithoutAllowHeaderহলে এবং সমস্যার সোর্সেtargetভ্যালু থাকলে, এটি ইঙ্গিত করে যে ব্যাকএন্ড সার্ভারAllowহেডার ছাড়া405স্ট্যাটাস কোড দিয়ে উত্তর দিয়েছে। তাই, Apigee502 Bad Gatewayসহ উত্তর দেয়, যার মধ্যে সমস্যার কোডprotocol.http.Response405WithoutAllowHeaderথাকে।
রেজোলিউশন
সমস্যার সমাধান করতে নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করুন:
ব্যাকএন্ড সার্ভার
বিকল্প #১: Allow হেডার সহ 405 স্ট্যাটাস কোড পাঠানোর জন্য ব্যাকএন্ড সার্ভার ঠিক করুন:
ব্যাকএন্ড সার্ভার যেন সবসময় স্পেসিফিকেশন মেনে চলে তা নিশ্চিত করুন RFC 7231, বিভাগ 6.5.5: 405 মেথড অনুমোদিত নয় এবং
405স্ট্যাটাস সহ পাঠায় কোড, যার মধ্যেAllowহেডার হিসেবে অনুমোদিত পদ্ধতির তালিকা অন্তর্ভুক্ত থাকে নিচে যেভাবে দেখানো হয়েছে:Allow: HTTP_METHODS
- যেমন, আপনার ব্যাকএন্ড সার্ভার যদি
GET,POSTএবংHEADপদ্ধতি অনুমোদন করে, তাহলে আপনাকে নিশ্চিত করতে হবে যেAllowহেডারে এগুলি নিম্নলিখিতভাবে আছে:Allow: GET, POST, HEAD
সমস্যা ম্যানেজ করা
বিকল্প #২: আপনার API থেকে Allow হেডার সহ 405 স্ট্যাটাস কোড পাঠানোর জন্য ফল্ট হ্যান্ডলিং ব্যবহার করুন প্রক্সি:
ব্যাকএন্ড সার্ভার যদি Allow
হেডার ছাড়া 405 স্ট্যাটাস কোড রিটার্ন করে, তাহলে আপনি নিম্নলিখিত উপায়ে 405 স্ট্যাটাস কোড ও
Allow হেডার সহ উত্তর দেওয়ার জন্য আপনার API প্রক্সি থেকে ফল্ট হ্যান্ডলিং ব্যবহার করতে পারবেন:
এই ধরনের নীতি তৈরি করুন AssignMessage নীতি বা RaiseFault নীতি এবং
Allowহেডার ও কাস্টম মেসেজ সহ স্ট্যাটাস কোডকে405হিসেবে সেট করুন।Allow হেডার সহ 405 পাঠানোর জন্য AssignMessage নীতির নমুনা:
<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তৈরি করুন, যা502সমস্যার সাথে সমস্যা কোডprotocol.http.Response405WithoutAllowHeaderপেলে নীতি প্রয়োগ করে।FaultRule সহ Sample TargetEndpoint কনফিগারেশন:
<TargetEndpoint name="default"> ... <FaultRules> <FaultRule name="405WithoutAllowHeader"> <Step> <Name>AM-405WithAllowHeader</Name> </Step> <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition> </FaultRule> </FaultRules>- আপনার API প্রক্সির নতুন রিভিশনে এই পরিবর্তনগুলি সেভ করুন এবং রিভিশনটি ডেপ্লয় করুন।
- API কল করুন এবং যাচাই করুন যে আপনি
405স্ট্যাটাস কোড সহAllowহেডার পাচ্ছেন।
প্রপার্টি কনফিগার করা
বিকল্প #৩: Apigee Edge যাতে ৫০২ সমস্যা কোড না দেখায়, তার জন্য মেসেজ প্রসেসরে প্রপার্টি কনফিগার করুন
- আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, Apigee Edge-কে
502সমস্যা তৈরি করা থেকে আটকাতে, আপনি প্রপার্টিHTTP.ignore.allow_header.for.405থেকেtrue-এ আপডেট করতে পারবেন। এমনকি, ব্যাকএন্ড সার্ভার405স্ট্যাটাস কোড সহ উত্তর দিলেও,Allowহেডার ব্যবহার করে, কীভাবে গাইড ব্যবহার করবেন তা জানুন: মেসেজ প্রসেসরে 405 প্রপার্টির জন্য উপেক্ষা করার অনুমতি হেডার কনফিগার করা। - আপনি পাবলিক ক্লাউড ব্যবহারকারী হলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন
স্পেসিফিকেশন
Apigee নিম্নলিখিত স্পেসিফিকেশন অনুযায়ী ব্যাকএন্ড সার্ভারের থেকে Allow হেডার সহ 405 Method Not Allowed উত্তর
প্রত্যাশা করে:
| স্পেসিফিকেশন | |
|---|---|
| RFC 7231, section 6.5.5: 405 Method Not Allowed | |
| RFC 7231, section 7.4.1: Allow |
মনে রাখার মতো গুরুত্বপূর্ণ বিষয়
সাজেস্ট করা সমাধান হল, Allow হেডার সহ 405 স্ট্যাটাস কোড
পাঠাতে এবং স্পেসিফিকেশন মেনে চলতে ব্যাকএন্ড সার্ভার ঠিক করা
RFC 7231, বিভাগ 6.5.5: 405 মেথড অনুমোদিত নয়।
Apigee সহায়তা টিমের থেকে আপনার এখনও কোনও সাহায্যের প্রয়োজন হলে, রোগ নির্ণয় সংক্রান্ত তথ্য অবশ্যই সংগ্রহ করতে হবে লিঙ্কে যান।
অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে
উপরে উল্লেখ করা নির্দেশাবলী অনুসরণ করার পরেও সমস্যাটি থেকে গেলে, নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপরে Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।
আপনি পাবলিক ক্লাউড ব্যবহারকারী হলে, নিম্নলিখিত তথ্য প্রদান করুন:
- সংস্থার নাম
- পরিবেশের নাম
- API প্রক্সির নাম
502 Bad Gatewayসমস্যাটি রিক্রিয়েট করতেcurlকমান্ড সম্পূর্ণ করুন, যার মধ্যে সমস্যার কোডprotocol.http.Response405WithoutAllowHeaderরয়েছে- API অনুরোধের জন্য ট্রেস ফাইল
আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, নিম্নলিখিত তথ্য দিন:
- অনুরোধ সম্পূর্ণ না হওয়ার ক্ষেত্রে দেখা সম্পূর্ণ সমস্যার মেসেজ
- পরিবেশের নাম
- API প্রক্সি বান্ডেল
- API অনুরোধের জন্য ট্রেস ফাইল
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