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

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

উপসর্গ

ক্লায়েন্ট অ্যাপ্লিকেশনটি API কলগুলির প্রতিক্রিয়া হিসাবে ত্রুটি কোড protocol.http.Response405WithoutAllowHeader সহ 502 Bad Gateway একটি HTTP স্ট্যাটাস কোড পায়।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 পদ্ধতি অনুমোদিত নয় , এটি প্রত্যাশিত যে অরিজিন সার্ভার অবশ্যই একটি 405 প্রতিক্রিয়াতে একটি Allow হেডার ক্ষেত্র তৈরি এবং পাঠাতে হবে যার মধ্যে লক্ষ্য সম্পদের বর্তমানে সমর্থিত পদ্ধতিগুলির একটি তালিকা রয়েছে৷ যদি না হয়, তাহলে Apigee 502 Bad Gateway এবং এরর কোড protocol.http.Response405WithoutAllowHeader দিয়ে প্রতিক্রিয়া জানায়।http.Response405WithoutAllowHeader।

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

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

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

API মনিটরিং

API মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:

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

    org ড্রপ-ডাউন তালিকা
  3. এনালাইজ > API মনিটরিং > ইনভেস্টিগেট পেজে নেভিগেট করুন।
  4. নির্দিষ্ট সময়সীমা নির্বাচন করুন যেখানে আপনি ত্রুটিগুলি পর্যবেক্ষণ করেছেন।
  5. সময়ের বিরুদ্ধে প্লট ফল্ট কোড

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

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

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

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

ট্রেস টুল

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

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

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

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

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

  7. ট্রেসে AX (Analytics Data Recorded) ফেজে নেভিগেট করুন এবং এটিতে ক্লিক করুন।
  8. ফেজ বিশদ প্যানেলে ত্রুটি / প্রতিক্রিয়া শিরোনাম বিভাগে স্ক্রোল করুন এবং নীচে দেখানো হিসাবে 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. আপনি যদি X-Apigee-fault-code-এর সাথে protocol.http.Response405WithoutAllowHeader এর মানের সাথে 502 টি ত্রুটি খুঁজে পান, তাহলে X-Apigee-ফল্ট-সোর্সের মান নির্ধারণ করুন।

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

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

    প্রতিক্রিয়া শিরোনাম মান
    এক্স-অ্যাপিজি-ফল্ট-কোড protocol.http.Response405WithoutAllowHeader
    এক্স-অ্যাপিজি-ফল্ট-উৎস target

কারণ: ব্যাকএন্ড সার্ভার থেকে হেডারের অনুমতি ছাড়াই 405 প্রতিক্রিয়া

রোগ নির্ণয়

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

রেজোলিউশন

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

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

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

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

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

ফল্ট হ্যান্ডলিং

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

যদি ব্যাকএন্ড সার্ভার Allow হেডার ছাড়াই 405 স্ট্যাটাস কোড ফেরত দেয়, তাহলে আপনি 405 স্ট্যাটাস কোডের সাথে প্রতিক্রিয়া জানাতে এবং আপনার API প্রক্সি থেকে 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 http.Response405WithoutAllowHeader-এর সাথে 502 ত্রুটি পাওয়ার পরে নীতির আহ্বান জানায়।

    নমুনা TargetEndpoint কনফিগারেশন FaultRule দেখাচ্ছে:

    <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 হেডার সহ।

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

বিকল্প #3: Apigee Edge কে 502 ত্রুটি ফেরানো থেকে আটকাতে মেসেজ প্রসেসরে সম্পত্তি কনফিগার করুন

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

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

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

স্পেসিফিকেশন
RFC 7231, বিভাগ 6.5.5: 405 পদ্ধতি অনুমোদিত নয়
RFC 7231, বিভাগ 7.4.1: অনুমতি দিন

উল্লেখ্য মূল পয়েন্ট

প্রস্তাবিত সমাধান হল 405 স্ট্যাটাস কোড পাঠানোর জন্য ব্যাকএন্ড সার্ভার ঠিক করা Allow RFC 7231, বিভাগ 6.5.5: 405 পদ্ধতিটি অনুমোদিত নয়

আপনার যদি এখনও Apigee সাপোর্ট থেকে কোনো সহায়তার প্রয়োজন হয়, তাহলে অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করুন- এ যান।

ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে

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

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

  • প্রতিষ্ঠানের নাম
  • পরিবেশের নাম
  • API প্রক্সি নাম
  • সম্পূর্ণ curl কমান্ড ত্রুটি কোড protocol.http.Response405WithoutAllowHeader সহ 502 Bad Gateway পুনরুত্পাদন করতে ব্যবহৃত হয়।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 মধ্যে ফল্ট হ্যান্ডলিং