502 খারাপ গেটওয়ে - হেডার অনুমতি ছাড়াই প্রতিক্রিয়া 405

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

লক্ষণ

ক্লায়েন্ট অ্যাপ্লিকেশনটি এপিআই কলের প্রতিক্রিয়া হিসাবে 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 স্পেসিফিকেশনের ৬.৫.৫: ৪০৫ মেথড নট অ্যালাউড (405 Method Not Allowed) ধারা অনুসারে, এটি প্রত্যাশিত যে অরিজিন সার্ভার একটি 405 রেসপন্সে অবশ্যই একটি Allow হেডার ফিল্ড তৈরি করে পাঠাবে, যেখানে টার্গেট রিসোর্সের বর্তমানে সমর্থিত মেথডগুলোর একটি তালিকা থাকবে। যদি তা না করা হয়, তাহলে Apigee 502 Bad Gateway এবং protocol.http.Response405WithoutAllowHeader এরর কোড দিয়ে রেসপন্স করে।

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
ব্যাকএন্ড সার্ভার থেকে Allow হেডার ছাড়া 405 রেসপন্স যে ব্যাকএন্ড সার্ভারটি এপিআই অনুরোধটি প্রসেস করছে, সেটি Allow হেডার ছাড়া 405 স্ট্যাটাস কোড দিয়ে সাড়া দেয়। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা

সাধারণ রোগ নির্ণয়ের পদক্ষেপ

এই ত্রুটি নির্ণয় করতে নিম্নলিখিত সরঞ্জাম/কৌশলগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:

এপিআই মনিটরিং

এপিআই মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. উপযুক্ত ভূমিকা সম্পন্ন একজন ব্যবহারকারী হিসেবে Edge UI- তে লগ ইন করুন।
  2. যে প্রতিষ্ঠানে আপনি বিষয়টি তদন্ত করতে চান, সেখানে যান।

    অর্গ ড্রপ-ডাউন তালিকা
  3. Analyze > API Monitoring > Investigate পৃষ্ঠায় যান।
  4. সেই নির্দিষ্ট সময়সীমাটি নির্বাচন করুন যার মধ্যে আপনি ত্রুটিগুলো লক্ষ্য করেছেন।
  5. সময়ের সাপেক্ষে ফল্ট কোডের লেখচিত্র অঙ্কন করুন।

  6. নিচে দেখানো অনুযায়ী, protocol.http.Response405WithoutAllowHeader ফল্ট কোডটি রয়েছে এমন একটি সেল নির্বাচন করুন:

  7. ফল্ট কোড protocol.http.Response405WithoutAllowHeader http.Response405WithoutAllowHeader সম্পর্কিত তথ্য নিচে দেখানো অনুযায়ী প্রদর্শিত হয়:

  8. আরও তথ্য দেখতে 'লগ দেখুন'-এ ক্লিক করুন এবং ব্যর্থ অনুরোধগুলির মধ্যে একটি প্রসারিত করুন।

  9. লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:
    • স্ট্যাটাস কোড: 502
    • ত্রুটির উৎস: target
    • ত্রুটি কোড: protocol.http.Response405WithoutAllowHeader .
  10. যদি ফল্ট সোর্স (Fault Source) target হয় এবং ফল্ট কোড (Fault Code ) protocol.http.Response405WithoutAllowHeader হয়, তাহলে এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভার Allow হেডার ছাড়াই 405 Method Not Allowed স্ট্যাটাস কোড দিয়ে সাড়া দিয়েছে।

ট্রেস টুল

ট্রেস টুল ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. ট্রেস সেশনটি সক্রিয় করুন এবং হয়
    • 502 Bad Gateway ত্রুটিটি ঘটার জন্য অপেক্ষা করুন, অথবা
    • আপনি যদি সমস্যাটি পুনরায় তৈরি করতে পারেন, তাহলে সমস্যাটি পুনরুৎপাদন করতে এপিআই কলটি করুন - 502 Bad Gateway ত্রুটি
  2. নিশ্চিত করুন যে 'Show all FlowInfos' চালু আছে:

  3. ব্যর্থ হওয়া অনুরোধগুলোর মধ্যে একটি নির্বাচন করুন এবং ট্রেসটি পরীক্ষা করুন।
  4. ট্রেসের বিভিন্ন ধাপ অতিক্রম করে ত্রুটিটি কোথায় ঘটেছে তা খুঁজে বের করুন।
  5. আপনি সাধারণত টার্গেট সার্ভারে অনুরোধ পাঠানোর ধাপের পরের ফ্লোতে ত্রুটিটি দেখতে পাবেন, যেমনটি নিচে দেখানো হয়েছে:

  6. ট্রেস থেকে ত্রুটির মানটি নোট করুন।

    উপরের নমুনা ট্রেসটিতে " Received 405 Response without Allow Header ত্রুটিটি দেখানো হচ্ছে। যেহেতু ব্যাকএন্ড সার্ভারে অনুরোধ পাঠানোর পরে Apigee এই ত্রুটিটি দেখিয়েছে, তাই এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারটি Allow হেডার ছাড়াই 405 রেসপন্স স্ট্যাটাস কোডটি পাঠিয়েছে।

  7. ট্রেসটিতে থাকা AX (অ্যানালিটিক্স ডেটা রেকর্ডেড) ফেজটিতে যান এবং এটিতে ক্লিক করুন।
  8. Phase Details প্যানেলে Error / Response Headers সেকশন পর্যন্ত স্ক্রল করুন এবং নিচে দেখানো অনুযায়ী X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান নির্ধারণ করুন:

  9. আপনি X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান যথাক্রমে protocol.http.Response405WithoutAllowHeader এবং target হিসেবে দেখতে পাবেন, যা নির্দেশ করে যে ব্যাকএন্ড Allow হেডার ছাড়াই 405 রেসপন্স স্ট্যাটাস কোড পাঠানোর কারণে এই ত্রুটিটি ঘটেছে।
    প্রতিক্রিয়া হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড protocol.http.Response405WithoutAllowHeader
    এক্স-এপিজি-ফল্ট-সোর্স target

এনজিআইএনএক্স

NGINX অ্যাক্সেস লগ ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে HTTP 502 ত্রুটি সম্পর্কিত গুরুত্বপূর্ণ তথ্য জানতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারেন।
  2. NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন:

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

    যেখানে: ORG , ORG এবং PORT# প্রকৃত মান দ্বারা প্রতিস্থাপিত হবে।

  3. একটি নির্দিষ্ট সময়কালের মধ্যে protocol.http.Response405WithoutAllowHeader এরর কোড সহ কোনো 502 এরর আছে কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো রিকোয়েস্ট 502 এরর দেখিয়ে ফেইল করছে কিনা তা খুঁজে দেখুন।
  4. যদি আপনি protocol.http.Response405WithoutAllowHeader এর মানের সাথে মিলে যাওয়া X-Apigee-fault-code সহ কোনো 502 ত্রুটি খুঁজে পান, তাহলে X-Apigee-fault-source-এর মান নির্ধারণ করুন।

    NGINX অ্যাক্সেস লগ থেকে প্রাপ্ত একটি নমুনা 502 ত্রুটি:

    NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিটিতে X-Apigee-fault-code এবং X-Apigee-fault-source-এর জন্য নিম্নলিখিত মানগুলি রয়েছে:

    প্রতিক্রিয়া হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড protocol.http.Response405WithoutAllowHeader
    এক্স-এপিজি-ফল্ট-সোর্স target

কারণ: ব্যাকএন্ড সার্ভার থেকে Allow হেডার ছাড়া 405 রেসপন্স

রোগ নির্ণয়

  1. সাধারণ ডায়াগনোসিস ধাপগুলিতে ব্যাখ্যা করা অনুযায়ী API মনিটরিং, ট্রেস টুল বা NGINX অ্যাক্সেস লগ ব্যবহার করে 502 Bad Gateway জন্য ফল্ট কোড এবং ফল্ট সোর্স নির্ধারণ করুন।
  2. যদি ফল্ট কোডটি protocol.http.Response405WithoutAllowHeader হয় এবং ফল্ট সোর্সের মান target হয়, তাহলে এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভার Allow হেডার ছাড়া 405 স্ট্যাটাস কোড দিয়ে সাড়া দিয়েছে। তাই, Apigee protocol.http.Response405WithoutAllowHeader এরর কোড সহ 502 Bad Gateway দিয়ে সাড়া দেয়।

সমাধান

সমস্যাটি সমাধান করতে নিম্নলিখিত পদ্ধতিগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:

ব্যাকএন্ড সার্ভার

বিকল্প #১: Allow হেডার সহ 405 স্ট্যাটাস কোড পাঠানোর জন্য ব্যাকএন্ড সার্ভারটি ঠিক করুন:

  1. নিশ্চিত করুন যে ব্যাকএন্ড সার্ভার সর্বদা RFC 7231, সেকশন 6.5.5: 405 Method Not Allowed স্পেসিফিকেশনটি মেনে চলে এবং নীচে দেখানো Allow হেডারের অংশ হিসাবে অনুমোদিত মেথডগুলির তালিকা অন্তর্ভুক্ত করে 405 স্ট্যাটাস কোড সহ ডেটা পাঠায়:

    Allow: HTTP_METHODS
  2. উদাহরণস্বরূপ, যদি আপনার ব্যাকএন্ড সার্ভার GET , POST এবং HEAD মেথড অনুমোদন করে, তাহলে আপনাকে নিশ্চিত করতে হবে যে Allow হেডারে সেগুলো নিম্নরূপভাবে অন্তর্ভুক্ত আছে:
    Allow: GET, POST, HEAD

ত্রুটি পরিচালনা

বিকল্প #২: ফল্ট হ্যান্ডলিং ব্যবহার করে আপনার এপিআই প্রক্সি থেকে Allow হেডার সহ 405 স্ট্যাটাস কোড পাঠান:

যদি ব্যাকএন্ড সার্ভার Allow হেডার ছাড়া 405 স্ট্যাটাস কোড ফেরত দেয়, তাহলে আপনি ফল্ট হ্যান্ডলিং ব্যবহার করে আপনার এপিআই প্রক্সি থেকে 405 স্ট্যাটাস কোড এবং Allow হেডার সহ নিম্নরূপে সাড়া দিতে পারেন:

  1. 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>
  2. TargetEndpoint এ একটি FaultRule তৈরি করুন, যা protocol.http.Response405WithoutAllowHeader এরর কোড সহ 502 এরর পেলে পলিসিটি কার্যকর করবে।

    FaultRul দেখানো নমুনা TargetEndpoint কনফিগারেশন:

    <TargetEndpoint name="default">
    ...
        <FaultRules>
           <FaultRule name="405WithoutAllowHeader">
                <Step>
                    <Name>AM-405WithAllowHeader</Name>
                </Step>
                <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition>
            </FaultRule>
        </FaultRules>
  3. আপনার এপিআই প্রক্সির একটি নতুন সংস্করণে এই পরিবর্তনগুলি সংরক্ষণ করুন এবং সংস্করণটি স্থাপন করুন।
  4. এপিআই কলগুলো করুন এবং যাচাই করুন যে আপনি Allow হেডার সহ 405 স্ট্যাটাস কোডটি পাচ্ছেন।

সম্পত্তি কনফিগার করুন

বিকল্প #৩: Apigee Edge-কে 502 এরর ফেরত দেওয়া থেকে বিরত রাখতে মেসেজ প্রসেসরে প্রপার্টিটি কনফিগার করুন।

  1. আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে "মেসেজ প্রসেসরে 502 প্রপার্টির জন্য ইগনোর অ্যালাউ হেডার কনফিগার করা" শীর্ষক হাউ-টু গাইডটি ব্যবহার করে HTTP.ignore.allow_header.for.405 প্রপার্টিটি true তে আপডেট করতে পারেন। এর ফলে, ব্যাকএন্ড সার্ভার Allow হেডার ছাড়া 405 স্ট্যাটাস কোড দিয়ে সাড়া দিলেও Apigee Edge 502 এরর দেখানো থেকে বিরত থাকবে
  2. আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে অনুগ্রহ করে Apigee Edge Support-এর সাথে যোগাযোগ করুন।

স্পেসিফিকেশন

Apigee নিম্নলিখিত স্পেসিফিকেশন অনুযায়ী ব্যাকএন্ড সার্ভার থেকে Allow হেডার সহ 405 Method Not Allowed রেসপন্স আশা করে:

স্পেসিফিকেশন
আরএফসি ৭২৩১, ধারা ৬.৫.৫: ৪০৫ পদ্ধতিটি অনুমোদিত নয়
আরএফসি ৭২৩১, ধারা ৭.৪.১: অনুমতি দিন

লক্ষণীয় গুরুত্বপূর্ণ বিষয়সমূহ

সুপারিশকৃত সমাধান হলো, ব্যাকএন্ড সার্ভারকে Allow হেডার সহ 405 স্ট্যাটাস কোড পাঠানোর জন্য ঠিক করা এবং RFC 7231 স্পেসিফিকেশনের 6.5.5: 405 Method Not Allowed সেকশনটি মেনে চলা।

আপনার যদি এখনও Apigee Support-এর কাছ থেকে কোনো সাহায্যের প্রয়োজন হয়, তাহলে Must gather diagnostic information- এ যান।

রোগ নির্ণয়ের তথ্য অবশ্যই সংগ্রহ করতে হবে

উপরোক্ত নির্দেশাবলী অনুসরণ করার পরেও যদি সমস্যাটি থেকে যায়, তাহলে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge Support-এর সাথে যোগাযোগ করুন।

আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:

  • সংস্থার নাম
  • পরিবেশের নাম
  • এপিআই প্রক্সি নাম
  • protocol.http.Response405WithoutAllowHeader কোড সহ 502 Bad Gateway ত্রুটিটি পুনরুৎপাদন করতে ব্যবহৃত সম্পূর্ণ curl কমান্ড।
  • এপিআই অনুরোধগুলির ট্রেস ফাইল

আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:

  • ব্যর্থ অনুরোধগুলির জন্য সম্পূর্ণ ত্রুটি বার্তা পরিলক্ষিত হয়েছে।
  • পরিবেশের নাম
  • এপিআই প্রক্সি বান্ডেল
  • এপিআই অনুরোধগুলির ট্রেস ফাইল
  • 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-তে ত্রুটি পরিচালনা