502 খারাপ গেটওয়ে - ডুপ্লিকেট হেডার

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

উপসর্গ

ক্লায়েন্ট অ্যাপ্লিকেশনটি API কলগুলির প্রতিক্রিয়া হিসাবে ত্রুটি কোড protocol.http.DuplicateHeader সহ 502 Bad Gateway একটি HTTP স্ট্যাটাস কোড পায়।http.DuplicateHeader।

ত্রুটি বার্তা

ক্লায়েন্ট অ্যাপ্লিকেশন নিম্নলিখিত প্রতিক্রিয়া কোড পায়:

HTTP/1.1 502 Bad Gateway

উপরন্তু, আপনি নীচে দেখানো একটির মত একটি ত্রুটি বার্তা পর্যবেক্ষণ করতে পারেন:

{
   "fault":{
      "faultstring":"Duplicate Header \"Expires\"",
      "detail":{
         "errorcode":"protocol.http.DuplicateHeader"
      }
   }
}

সম্ভাব্য কারণ

Apigee Edge-এ ব্যাকএন্ড সার্ভার দ্বারা প্রেরিত HTTP প্রতিক্রিয়ার অংশ হিসাবে, Apigee Edge-এ অনুলিপি করার অনুমতি নেই এমন একটি নির্দিষ্ট HTTP শিরোনাম একই বা ভিন্ন মান সহ একাধিকবার উপস্থিত হলে এই ত্রুটিটি ঘটে।

RFC 7230 অনুযায়ী, বিভাগ 3.2.2: ফিল্ড অর্ডার , একজন প্রেরক অবশ্যই একটি বার্তায় একই ক্ষেত্রের নামের সাথে একাধিক শিরোনাম ক্ষেত্র তৈরি করবেন না যদি না সেই শিরোনাম ক্ষেত্রের জন্য সম্পূর্ণ ক্ষেত্রের মান একটি কমা দ্বারা পৃথক করা তালিকা হিসাবে সংজ্ঞায়িত করা হয়, [যেমন , #(মান)] বা হেডার ক্ষেত্র একটি সুপরিচিত ব্যতিক্রম। Apigee Edge যদি লক্ষ্য করে/ব্যাকএন্ড সার্ভারের পাঠানো HTTP প্রতিক্রিয়ায় একটি নির্দিষ্ট একই শিরোনাম, যেটিকে ডুপ্লিকেট করার অনুমতি দেওয়া হয় না, একাধিকবার পাঠানো হয়, তাহলে এটি 502 Bad Gateway এবং ত্রুটি কোড protocol.http.DuplicateHeader সাথে প্রতিক্রিয়া জানায়।http.DuplicateHeader

এই ত্রুটির সম্ভাব্য কারণগুলি এখানে রয়েছে:

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

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

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

API মনিটরিং

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

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

  3. এনালাইজ > API মনিটরিং > ইনভেস্টিগেট পেজে নেভিগেট করুন।
  4. নির্দিষ্ট সময়সীমা নির্বাচন করুন যেখানে আপনি ত্রুটিগুলি পর্যবেক্ষণ করেছেন।
  5. প্রক্সি ফিল্টারটি সকলে সেট করা আছে তা নিশ্চিত করুন।
  6. সময়ের বিরুদ্ধে প্লট ফল্ট কোড
  7. ফল্ট কোড protocol.http.DuplicateHeader আছে এমন একটি সেল নির্বাচন করুন। http.DuplicateHeader নীচে দেখানো হয়েছে:

    ( বড় ছবি দেখুন )

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

    ( বড় ছবি দেখুন )

  9. উপরের উদাহরণে দেখানো হিসাবে স্ট্যাটাস কোড 502 হয় তা নিশ্চিত করুন।
  10. লগ দেখুন ক্লিক করুন এবং ব্যর্থ অনুরোধের জন্য সারি প্রসারিত করুন।
  11. লগ উইন্ডো থেকে, নিম্নলিখিত বিবরণ নোট করুন:

    • স্ট্যাটাস কোড: 502
    • ফল্ট উত্স: target
    • ফল্ট কোড: protocol.http.DuplicateHeader
  12. ফল্ট সোর্স হল target , যা নির্দেশ করে যে ব্যাকএন্ড সার্ভারের প্রতিক্রিয়াতে ডুপ্লিকেট হেডার রয়েছে।

ট্রেস টুল

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

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

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

    ( বড় ছবি দেখুন )

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

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

  7. ট্রেসে AX (Analytics Data Recorded) ফেজে নেভিগেট করুন এবং এটিতে ক্লিক করুন।
  8. নিচের ধাপের বিবরণ - প্রতিক্রিয়া শিরোনাম বিভাগে স্ক্রোল করুন এবং X-Apigee-fault-code এবং X-Apigee-ফল্ট-সোর্সের মান নির্ধারণ করুন যেমন নীচে দেখানো হয়েছে:

    ( বড় ছবি দেখুন )

  9. আপনি protocol.http.DuplicateHeader হিসাবে X-Apigee-fault-code এবং X-Apigee-fault-source এর মানগুলি দেখতে পাবেন। http.DuplicateHeader এবং target , এই ত্রুটিটি ইঙ্গিত করে কারণ ডুপ্লিকেট হেডারগুলি প্রতিক্রিয়া Expires জন্য ব্যাকএন্ড সার্ভার দ্বারা পাস করা হয়েছিল। .
    প্রতিক্রিয়া শিরোনাম মান
    এক্স-অ্যাপিজি-ফল্ট-কোড protocol.http.DuplicateHeader
    এক্স-অ্যাপিজি-ফল্ট-উৎস target
  10. আপনি প্রক্সি চেইনিং ব্যবহার করছেন কিনা তা পরীক্ষা করুন; অর্থাৎ, যদি টার্গেট সার্ভার বা টার্গেট এন্ডপয়েন্ট Apigee-তে অন্য প্রক্সি আহ্বান করে।

    1. এটি নির্ধারণ করতে, লক্ষ্য সার্ভার পর্বে পাঠানো অনুরোধে ফিরে যান। কার্ল দেখান ক্লিক করুন।

    2. টার্গেট সার্ভারে পাঠানো অনুরোধের জন্য কার্ল উইন্ডোটি খোলে যেখান থেকে আপনি লক্ষ্য সার্ভার হোস্ট উপনাম নির্ধারণ করতে পারেন।

    3. যদি লক্ষ্য সার্ভার হোস্ট উপনাম একটি ভার্চুয়াল হোস্ট উপনাম নির্দেশ করে, তাহলে এটি প্রক্সি চেইনিং। এই ক্ষেত্রে, 502 Bad Gateway ত্রুটির কারণ কী তা নির্ধারণ না করা পর্যন্ত আপনাকে চেইনড প্রক্সির জন্য উপরের সমস্ত পদক্ষেপগুলি পুনরাবৃত্তি করতে হবে।
    4. যদি টার্গেট সার্ভার হোস্ট ওরফে আপনার ব্যাকএন্ড সার্ভারের দিকে নির্দেশ করে, তাহলে এটি নির্দেশ করে যে আপনার ব্যাকএন্ড সার্ভার Apigee-এর প্রতিক্রিয়ায় ডুপ্লিকেট হেডার পাঠাচ্ছে।

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

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

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

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

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

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

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

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

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

কারণ: উত্তরে হেডার ডুপ্লিকেট

রোগ নির্ণয়

  1. এপিআই মনিটরিং বা এনজিআইএনএক্স অ্যাক্সেস লগ ব্যবহার করে দেখা ত্রুটির জন্য ফল্ট কোড এবং ফল্ট সোর্স নির্ণয় করুন যা সাধারণ নির্ণয়ের ধাপে ব্যাখ্যা করা হয়েছে।
  2. যদি ফল্ট সোর্সের মান target থাকে, তাহলে এটি নির্দেশ করে যে টার্গেট সার্ভারের পাঠানো প্রতিক্রিয়াতে ডুপ্লিকেট হেডার রয়েছে।
  3. আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে প্রতিক্রিয়ার অংশ হিসাবে একাধিকবার পাঠানো প্রকৃত হেডার নির্ধারণ করতে পারেন:

    ত্রুটি বার্তা

    ত্রুটি বার্তা ব্যবহার করে:

    1. Apigee Edge থেকে প্রাপ্ত সম্পূর্ণ ত্রুটির বার্তায় আপনার অ্যাক্সেস থাকলে, faultstring পড়ুন। faultstring হেডারের নাম রয়েছে যা একাধিকবার পাঠানো হয়েছে।

      নমুনা ত্রুটি বার্তা:

      "faultstring":"Duplicate Header \"Expires\""
    2. উপরের ত্রুটি বার্তায়, আপনি দেখতে পাচ্ছেন যে faultstring -এ যেমন দেখা যাচ্ছে হেডার Expires একাধিকবার পাঠানো হয়েছে।

    প্রকৃত অনুরোধ

    প্রকৃত অনুরোধ ব্যবহার করে:

    1. টার্গেট সার্ভারে করা প্রকৃত অনুরোধে আপনার অ্যাক্সেস না থাকলে, ট্রেস টুল ধাপ 10.a এবং ধাপ 10.b ব্যবহার থেকে সংশ্লিষ্ট curl কমান্ডটি পান।
    2. লক্ষ্য সার্ভার অ্যাপ্লিকেশনে করা প্রকৃত অনুরোধে আপনার অ্যাক্সেস থাকলে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

      1. টার্গেট সার্ভারে একটি কল করুন।

        এই উদাহরণে ব্যবহৃত টার্গেট সার্ভারের জন্য নমুনা অনুরোধ:

        curl -X GET "https://BACKEND_SERVER_HOST/response-headers?Expires=Mon%2C%2021%20June%202021%2007%3A28%3A00%20GMT&Expires=Mon%2C%2021%20June%202021%2007%3A28%3A00%20GMT" -v
        
      2. প্রতিক্রিয়ায় দেখা শিরোনামের তালিকা যাচাই করুন।

        এই উদাহরণে ব্যবহৃত টার্গেট সার্ভার থেকে নমুনা প্রতিক্রিয়া:

        * ...Trimmed...
        > GET /response-headers?Expires=Mon%2C%2021%20June%202021%2007%3A28%3A00%20GMT&Expires=Mon%2C%2021%20June%202021%2007%3A28%3A00%20GMT HTTP/2
        > Host: BACKEND_SERVER_HOST
        > User-Agent: curl/7.64.1
        > Accept: */*
        >
        * Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
        < HTTP/2 200
        < date: Fri, 02 Jul 2021 05:29:07 GMT
        < content-type: application/json
        < content-length: 166
        < server: gunicorn/19.9.0
        < Expires: Mon, 21 June 2021 07:28:00 GMT
        < Expires: Mon, 21 June 2021 07:28:00 GMT
        < access-control-allow-origin: *
        < access-control-allow-credentials: true
        <
        ----<Response BODY>------
        * Connection #0 to host httpbin.org left intact
        * Closing connection 0

        উপরের উদাহরণের অনুরোধে, শিরোনামটির Expires একাধিকবার পাঠানো হয়েছে। অতএব, এই অনুরোধটি 502 Bad Gateway ত্রুটি এবং ত্রুটি কোডের সাথে ব্যর্থ হয়: protocol.http.DuplicateHeader

      3. যে হেডারটির নাম faultstring -এ প্রদর্শিত হয় সেটি যদি ব্যাকএন্ড সার্ভারের প্রতিক্রিয়ায় একাধিকবার উপস্থিত হয়, তাহলে এটি এই ত্রুটির কারণ। উপরের ক্ষেত্রে, শিরোনামটির Expires একাধিকবার পাঠানো হয়েছে।

রেজোলিউশন

ডুপ্লিকেশন ঠিক করুন

বিকল্প #1 [প্রস্তাবিত বিকল্প] ডুপ্লিকেট হেডার অন্তর্ভুক্ত না করার জন্য ব্যাকএন্ড সার্ভার ঠিক করুন

  1. নির্দিষ্ট ব্যাকএন্ড সার্ভারের ডুপ্লিকেট হেডার পাঠানোর কারণ বিশ্লেষণ করুন Expires এবং যাচাই করুন যে API প্রক্সিগুলির পক্ষে এটি গ্রহণ করা ঠিক আছে কিনা। বেশিরভাগ ক্ষেত্রে, HTTP স্পেসিফিকেশন RFC7230 অনুযায়ী এটি কাম্য হবে না।
  2. যদি এটি পছন্দসই না হয়, তাহলে ডুপ্লিকেট হেডার না পাঠানোর জন্য আপনার টার্গেট সার্ভার অ্যাপ্লিকেশন পরিবর্তন করুন। উপরে আলোচিত উদাহরণে, এটি লক্ষ্য করা যায় যে হেডারের Expires একই মান সহ দুবার পাঠানো হয়েছে, যা কাম্য নয়। টার্গেট সার্ভার শুধুমাত্র একবার Expires শিরোনামটি পাস করেছে তা নিশ্চিত করে আপনি সমস্যার সমাধান করতে পারেন।
  3. যদি এটি পছন্দসই হয় এবং আপনি ডুপ্লিকেট শিরোনামগুলিকে অনুমতি দিতে চান, CwC সম্পত্তি ব্যবহার করে বিকল্প #2 এ যান।

CwC

বিকল্প #2 CwC সম্পত্তি ব্যবহার করে

Apigee একটি CwC প্রপার্টি HTTPHeader.<HeaderName> , যা ক্লায়েন্ট অ্যাপ্লিকেশন এবং টার্গেট সার্ভারকে Apigee এজ-এ API প্রক্সিগুলিতে ডুপ্লিকেট হেডার পাঠাতে দেয়।

CwC সম্পত্তি মূল্যবোধ
HTTPHeader.<HeaderName> allowDuplicates,multivalued

উদাহরণ স্বরূপ, নিচের প্রপার্টি মেসেজ প্রসেসরে সেট করা যেতে পারে যাতে ডুপ্লিকেট এবং একাধিক মান হেডারের Expires

HTTPHeader.Expires=allowDuplicates, multiValued
  1. আপনি যদি একজন ব্যক্তিগত ক্লাউড ব্যবহারকারী হন, তাহলে আপনি Apigee Edge-কে 502 Bad Gateway ত্রুটি উত্থাপন থেকে আটকাতে সম্পত্তি কনফিগার করতে পারেন, এমনকি যদি অনুরোধে ডুপ্লিকেট হেডার ব্যবহার করে কনফিগারিং মেসেজ প্রসেসর ব্যবহার করে ডুপ্লিকেট শিরোনামগুলি কীভাবে নির্দেশিত হয়।
  2. আপনি যদি একজন পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে আপনার প্রতিষ্ঠানের জন্য এই সম্পত্তি কনফিগার করতে Apigee Edge সাপোর্টের সাথে যোগাযোগ করুন।

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

Apigee 502 Bad Gateway ত্রুটির প্রতিক্রিয়ার সাথে প্রতিক্রিয়া জানায় কারণ এটি আশা করে যে ব্যাকএন্ড সার্ভার নিম্নলিখিত RFC স্পেসিফিকেশন অনুযায়ী আচরণ করবে:

স্পেসিফিকেশন
RFC 7230, বিভাগ 3.2.2: ফিল্ড অর্ডার
RFC 7230, বিভাগ 3.2: হেডার ক্ষেত্র

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

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

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

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

  • প্রতিষ্ঠানের নাম
  • পরিবেশের নাম
  • API প্রক্সি নাম
  • 502 ত্রুটি পুনরুত্পাদন করতে ব্যবহৃত সম্পূর্ণ curl কমান্ড
  • API অনুরোধের জন্য ট্রেস ফাইল

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

  • ব্যর্থ অনুরোধের জন্য পরিলক্ষিত সম্পূর্ণ ত্রুটি বার্তা
  • পরিবেশের নাম
  • API প্রক্সি বান্ডেল
  • API অনুরোধের জন্য ট্রেস ফাইল
  • NGINX অ্যাক্সেস লগ:

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

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

  • বার্তা প্রসেসর সিস্টেম লগ /opt/apigee/var/log/edge-message-processor/logs/system.log