502 ভুল গেটওয়ে - অনুমতি হেডার ছাড়া উত্তর 405

আপনি 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 মনিটরিং ব্যবহার করে সমস্যার ডায়াগনসিস করতে:

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

    সংস্থা ড্রপডাউন তালিকা
  3. বিশ্লেষণ করুন > API মনিটরিং > তদন্ত করুন পৃষ্ঠায় নেভিগেট করুন।
  4. আপনি যে নির্দিষ্ট সময়সীমার মধ্যে সমস্যাটি লক্ষ্য করেছেন সেটি বেছে নিন।
  5. সময় অনুযায়ী সমস্যার কোড প্লট করুন।

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

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

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

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

ট্রেস টুল

Trace টুল ব্যবহার করে সমস্যার ডায়াগনসিস করতে:

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

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

  6. ট্রেস থেকে পাওয়া ত্রুটির ভ্যালু নোট করুন।

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

  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. আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, HTTP 502 সমস্যা সম্পর্কে মূল তথ্য নির্ধারণ করতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারবেন।
  2. NGINX অ্যাক্সেস লগ চেক করুন:

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

    কোথায়: ORG, ORG এবং PORT#-এর জায়গায় আসল ভ্যালু বসাতে হবে।

  3. নির্দিষ্ট সময়সীমার মধ্যে (যদি সমস্যাটি আগে ঘটে থাকে) 502 সমস্যার কোড protocol.http.Response405WithoutAllowHeader সহ কোনও সমস্যা আছে কিনা তা সার্চ করে দেখুন অথবা এখনও কোনও অনুরোধ ব্যর্থ হচ্ছে কিনা তা 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-এর জন্য নিম্নলিখিত ভ্যালু আছে:

    রেসপন্স হেডার ভ্যালু
    X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
    X-Apigee-fault-source target

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

ডায়াগনসিস

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

রেজোলিউশন

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

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

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

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

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

সমস্যা ম্যানেজ করা

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

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

  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 তৈরি করুন, যা 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>
  3. আপনার API প্রক্সির নতুন রিভিশনে এই পরিবর্তনগুলি সেভ করুন এবং রিভিশনটি ডেপ্লয় করুন।
  4. API কল করুন এবং যাচাই করুন যে আপনি 405 স্ট্যাটাস কোড সহ Allow হেডার পাচ্ছেন।

প্রপার্টি কনফিগার করা

বিকল্প #৩: Apigee Edge যাতে ৫০২ সমস্যা কোড না দেখায়, তার জন্য মেসেজ প্রসেসরে প্রপার্টি কনফিগার করুন

  1. আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, Apigee Edge-কে 502 সমস্যা তৈরি করা থেকে আটকাতে, আপনি প্রপার্টি HTTP.ignore.allow_header.for.405 থেকে true-এ আপডেট করতে পারবেন। এমনকি, ব্যাকএন্ড সার্ভার 405 স্ট্যাটাস কোড সহ উত্তর দিলেও, Allow হেডার ব্যবহার করে, কীভাবে গাইড ব্যবহার করবেন তা জানুন: মেসেজ প্রসেসরে 405 প্রপার্টির জন্য উপেক্ষা করার অনুমতি হেডার কনফিগার করা।
  2. আপনি পাবলিক ক্লাউড ব্যবহারকারী হলে, 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

রেফারেন্স

Apigee-তে সমস্যা ম্যানেজ করা