আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
লক্ষণ
ক্লায়েন্ট অ্যাপ্লিকেশনটি এপিআই কলের প্রতিক্রিয়া হিসেবে protocol.http.DuplicateHeader .http.DuplicateHeader এরর কোডসহ 502 Bad Gateway HTTP স্ট্যাটাস কোড পায়।
ত্রুটি বার্তা
ক্লায়েন্ট অ্যাপ্লিকেশনটি নিম্নলিখিত প্রতিক্রিয়া কোডটি পায়:
HTTP/1.1 502 Bad Gateway
এছাড়াও, আপনি নীচে দেখানোটির মতো একটি ত্রুটি বার্তা দেখতে পারেন:
{
"fault":{
"faultstring":"Duplicate Header \"Expires\"",
"detail":{
"errorcode":"protocol.http.DuplicateHeader"
}
}
}সম্ভাব্য কারণসমূহ
এই ত্রুটিটি ঘটে যদি কোনো নির্দিষ্ট HTTP হেডার, যার একাধিক কপি Apigee Edge-এ থাকা অনুমোদিত নয়, ব্যাকএন্ড সার্ভার থেকে Apigee Edge-এ পাঠানো HTTP রেসপন্সের অংশ হিসেবে একই বা ভিন্ন মান নিয়ে একাধিকবার উপস্থিত হয়।
RFC 7230-এর ৩.২.২: ফিল্ড অর্ডার ধারা অনুসারে , একজন প্রেরক একটি বার্তায় একই ফিল্ড নামের একাধিক হেডার ফিল্ড তৈরি করতে পারবে না, যদি না সেই হেডার ফিল্ডের সম্পূর্ণ ফিল্ড ভ্যালু একটি কমা-বিভক্ত তালিকা হিসেবে সংজ্ঞায়িত করা থাকে [অর্থাৎ, #(ভ্যালু)] অথবা হেডার ফিল্ডটি একটি সুপরিচিত ব্যতিক্রম হয়। যদি Apigee Edge দেখতে পায় যে টার্গেট/ব্যাকএন্ড সার্ভার দ্বারা প্রেরিত HTTP রেসপন্সে একটি নির্দিষ্ট একই হেডার, যার ডুপ্লিকেট থাকা অনুমোদিত নয়, একাধিকবার পাঠানো হয়েছে, তাহলে এটি 502 Bad Gateway এবং protocol.http.DuplicateHeader এরর কোড দিয়ে সাড়া দেয়।
এই ত্রুটির সম্ভাব্য কারণগুলো নিচে দেওয়া হলো:
| কারণ | বর্ণনা | সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য |
|---|---|---|
| প্রতিক্রিয়ায় ডুপ্লিকেট হেডার | ব্যাকএন্ড সার্ভার থেকে প্রাপ্ত প্রতিক্রিয়াটিতে ডুপ্লিকেট হেডার রয়েছে। | এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা |
সাধারণ রোগ নির্ণয়ের পদক্ষেপ
এই ত্রুটি নির্ণয় করতে নিম্নলিখিত সরঞ্জাম/কৌশলগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:
এপিআই মনিটরিং
এপিআই মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:
- উপযুক্ত ভূমিকা সম্পন্ন একজন ব্যবহারকারী হিসেবে Apigee Edge UI-তে সাইন ইন করুন ।
যে প্রতিষ্ঠানে আপনি বিষয়টি তদন্ত করতে চান, সেখানে যান।

- Analyze > API Monitoring > Investigate পৃষ্ঠায় যান।
- সেই নির্দিষ্ট সময়সীমাটি নির্বাচন করুন যার মধ্যে আপনি ত্রুটিগুলো লক্ষ্য করেছেন।
- নিশ্চিত করুন যে প্রক্সি ফিল্টারটি ‘সকল’ (All) এ সেট করা আছে।
- সময়ের সাপেক্ষে ফল্ট কোডের লেখচিত্র অঙ্কন করুন।
নীচে দেখানো অনুযায়ী, যে সেলটিতে ফল্ট কোড
protocol.http.DuplicateHeaderআছে, সেটি নির্বাচন করুন:( বড় ছবি দেখুন )

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

- উপরের উদাহরণে দেখানো অনুযায়ী স্ট্যাটাস কোডটি যে
502, তা নিশ্চিত করুন। - 'লগ দেখুন'-এ ক্লিক করুন এবং ব্যর্থ অনুরোধটির সারিটি প্রসারিত করুন।

লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:
- স্ট্যাটাস কোড:
502 - ত্রুটির উৎস:
target - ত্রুটি কোড:
protocol.http.DuplicateHeader.
- স্ট্যাটাস কোড:
- ত্রুটির উৎস হলো '
target, যা নির্দেশ করে যে ব্যাকএন্ড সার্ভার থেকে প্রাপ্ত রেসপন্সে ডুপ্লিকেট হেডার ছিল।
ট্রেস টুল
ট্রেস টুল ব্যবহার করে ত্রুটি নির্ণয় করতে:
- ট্রেস সেশনটি সক্রিয় করুন এবং হয়
-
502 Bad Gatewayত্রুটিটি ঘটার জন্য অপেক্ষা করুন অথবা - আপনি যদি সমস্যাটি পুনরায় তৈরি করতে পারেন, তাহলে এপিআই কলটি করুন এবং
502 Bad Gatewayত্রুটিটি পুনরায় দেখান।
-
নিশ্চিত করুন যে ‘Show all Flow Infos’ চালু আছে:

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

ট্রেস থেকে ত্রুটির মানটি নোট করুন।
উপরের নমুনা ট্রেসটিতে
Duplicate Header "Expires"ত্রুটিটি দেখানো হচ্ছে। যেহেতু ব্যাকএন্ড সার্ভারে অনুরোধ পাঠানোর পরে Apigee এই ত্রুটিটি দেখাচ্ছে, তাই এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারটি "Expires" হেডারটি একাধিকবার পাঠিয়েছে।- ট্রেসটিতে AX (অ্যানালিটিক্স ডেটা রেকর্ড করা) পর্যায়ে যান এবং সেটিতে ক্লিক করুন।
নিচে স্ক্রল করে Phase Details - Response Headers সেকশনে যান এবং নিচে দেখানো অনুযায়ী X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান নির্ধারণ করুন:
( বড় ছবি দেখুন )

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

"Curl for Request Sent to Target Server" উইন্ডোটি খোলে, যেখান থেকে আপনি টার্গেট সার্ভারের হোস্ট অ্যালিয়াস নির্ধারণ করতে পারেন।
- যদি টার্গেট সার্ভার হোস্ট অ্যালিয়াসটি কোনো ভার্চুয়াল হোস্ট অ্যালিয়াসকে নির্দেশ করে, তাহলে এটি প্রক্সি চেইনিং। এই ক্ষেত্রে, চেইনড প্রক্সির জন্য আপনাকে উপরের সমস্ত ধাপগুলো পুনরাবৃত্তি করতে হবে, যতক্ষণ না আপনি নির্ধারণ করতে পারেন যে আসলে কী কারণে
502 Bad Gatewayত্রুটিটি ঘটছে। - যদি টার্গেট সার্ভার হোস্ট অ্যালিয়াসটি আপনার ব্যাকএন্ড সার্ভারকে নির্দেশ করে, তাহলে এটি বোঝায় যে আপনার ব্যাকএন্ড সার্ভারটি Apigee-কে পাঠানো রেসপন্সে ডুপ্লিকেট হেডারগুলো পাঠাচ্ছে।
এনজিআইএনএক্স
NGINX অ্যাক্সেস লগ ব্যবহার করে ত্রুটি নির্ণয় করতে:
- আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে HTTP
502ত্রুটি সম্পর্কিত গুরুত্বপূর্ণ তথ্য জানতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারেন। NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_logযেখানে: ORG , ENV এবং PORT# প্রকৃত মান দ্বারা প্রতিস্থাপিত হয়।
- একটি নির্দিষ্ট সময়কালের মধ্যে কোনো
502ত্রুটি আছে কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো অনুরোধ502ত্রুটির কারণে ব্যর্থ হচ্ছে কিনা তা অনুসন্ধান করে দেখুন। যদি আপনি
protocol.http.DuplicateHeaderএর মানের সাথে মিলে যাওয়া X-Apigee-fault-code সহ কোনো502ত্রুটি খুঁজে পান, তাহলে X-Apigee-fault-source-এর মান নির্ধারণ করুন।NGINX অ্যাক্সেস লগ থেকে প্রাপ্ত একটি নমুনা ৫০২ এরর:

NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিটিতে X-Apigee-fault-code এবং X-Apigee-fault-source-এর জন্য নিম্নলিখিত মানগুলি রয়েছে:
প্রতিক্রিয়া হেডার মূল্য এক্স-এপিজি-ফল্ট-কোড protocol.http.DuplicateHeaderএক্স-এপিজি-ফল্ট-সোর্স target
কারণ: প্রতিক্রিয়ায় ডুপ্লিকেট হেডার।
রোগ নির্ণয়
- সাধারণ রোগ নির্ণয়ের ধাপগুলিতে ব্যাখ্যা করা অনুযায়ী API মনিটরিং অথবা NGINX অ্যাক্সেস লগ ব্যবহার করে পরিলক্ষিত ত্রুটির জন্য ফল্ট কোড এবং ফল্ট সোর্স নির্ধারণ করুন।
- যদি ফল্ট সোর্সের মান
targetহয়, তাহলে এটি নির্দেশ করে যে টার্গেট সার্ভার থেকে পাঠানো রেসপন্সে ডুপ্লিকেট হেডার রয়েছে। রেসপন্সের অংশ হিসেবে একাধিকবার পাঠানো প্রকৃত হেডারটি আপনি নিম্নলিখিত পদ্ধতিগুলোর যেকোনো একটি ব্যবহার করে নির্ধারণ করতে পারেন:
ত্রুটি বার্তা
ত্রুটির বার্তা ব্যবহার করে:
আপনার কাছে যদি Apigee Edge থেকে প্রাপ্ত সম্পূর্ণ এরর মেসেজটি থাকে, তাহলে
faultstringটি দেখুন।faultstringটিতে সেই হেডারের নামটি থাকে যা একাধিকবার পাঠানো হয়েছে।নমুনা ত্রুটি বার্তা:
"faultstring":"Duplicate Header \"Expires\""
- উপরের এরর মেসেজে আপনি দেখতে পাচ্ছেন যে,
faultstringএ যেমন দেখা যাচ্ছে,Expiresহেডারটি একাধিকবার পাঠানো হয়েছে।
প্রকৃত অনুরোধ
প্রকৃত অনুরোধ ব্যবহার করে:
- টার্গেট সার্ভারে করা আসল অনুরোধটি যদি আপনার কাছে না থাকে, তাহলে "ট্রেস টুল ব্যবহার" অংশের ১০.ক এবং ১০.খ ধাপ থেকে সংশ্লিষ্ট
curlকমান্ডটি সংগ্রহ করুন। টার্গেট সার্ভার অ্যাপ্লিকেশনে করা প্রকৃত অনুরোধটি যদি আপনার কাছে থাকে, তাহলে নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
টার্গেট সার্ভারে একটি কল করুন।
এই উদাহরণে ব্যবহৃত টার্গেট সার্ভারের জন্য নমুনা অনুরোধ:
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
রেসপন্সে প্রদর্শিত হেডারগুলোর তালিকা যাচাই করুন।
এই উদাহরণে ব্যবহৃত টার্গেট সার্ভার থেকে প্রাপ্ত নমুনা প্রতিক্রিয়া:
* ...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ত্রুটি কোড সহ ব্যর্থ হয়।যদি
faultstringএ উল্লেখিত হেডারটি ব্যাকএন্ড সার্ভারের রেসপন্সে একাধিকবার আসে, তাহলে সেটাই এই এররের কারণ। উপরের ক্ষেত্রে,Expiresহেডারটি একাধিকবার পাঠানো হয়েছে।
সমাধান
নকল সংশোধন করুন
বিকল্প #১ [প্রস্তাবিত বিকল্প] ডুপ্লিকেট হেডার অন্তর্ভুক্ত না করার জন্য ব্যাকএন্ড সার্ভারটি ঠিক করুন
- নির্দিষ্ট ব্যাকএন্ড সার্ভারটি কেন ডুপ্লিকেট '
Expiresহেডার পাঠাচ্ছে তার কারণ বিশ্লেষণ করুন এবং এপিআই প্রক্সিগুলোর জন্য তা গ্রহণ করা সমীচীন হবে কিনা তা যাচাই করুন। HTTP স্পেসিফিকেশন RFC7230 অনুযায়ী, বেশিরভাগ ক্ষেত্রেই এটি কাম্য হবে না। - যদি এটি অনাকাঙ্ক্ষিত হয়, তবে আপনার টার্গেট সার্ভার অ্যাপ্লিকেশনটি এমনভাবে পরিবর্তন করুন যাতে এটি ডুপ্লিকেট হেডার না পাঠায়। উপরে আলোচিত উদাহরণে দেখা যায় যে,
Expiresহেডারটি একই মান সহ দুইবার পাঠানো হয়েছে, যা অনাকাঙ্ক্ষিত। টার্গেট সার্ভার যেনExpiresহেডারটি শুধুমাত্র একবার পাঠায়, তা নিশ্চিত করার মাধ্যমে আপনি এই সমস্যাটি সমাধান করতে পারেন। - যদি এটি কাম্য হয় এবং আপনি ডুপ্লিকেট হেডারগুলির অনুমতি দিতে চান, তাহলে বিকল্প #২-এ যান: CwC প্রপার্টি ব্যবহার ।
সিডব্লিউসি
বিকল্প #২ CwC প্রপার্টি ব্যবহার করে
Apigee একটি CwC প্রপার্টি HTTPHeader.<HeaderName> প্রদান করে, যা ক্লায়েন্ট অ্যাপ্লিকেশন এবং টার্গেট সার্ভারগুলোকে Apigee Edge-এর API প্রক্সিগুলোতে ডুপ্লিকেট হেডার পাঠাতে অনুমতি দেয়।
| CwC সম্পত্তি | মূল্যবোধ |
|---|---|
HTTPHeader.<HeaderName> | allowDuplicates,multivalued |
উদাহরণস্বরূপ, Expires হেডারের জন্য ডুপ্লিকেট এবং একাধিক মান অনুমোদনের জন্য মেসেজ প্রসেসরগুলিতে নিম্নলিখিত প্রপার্টিটি সেট করা যেতে পারে।
HTTPHeader.Expires=allowDuplicates, multiValued
- আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে ‘কনফিগারেশন মেসেজ প্রসেসরস টু ইউজ ডুপ্লিকেট হেডারস’ হাউ-টু গাইডটি ব্যবহার করে এই প্রপার্টিটি কনফিগার করতে পারেন, যাতে অনুরোধে ডুপ্লিকেট হেডার থাকলেও Apigee Edge
502 Bad Gatewayএরর দেখানো থেকে বিরত থাকে। - আপনি যদি একজন পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে আপনার প্রতিষ্ঠানের জন্য এই প্রপার্টিটি কনফিগার করতে Apigee Edge Support-এর সাথে যোগাযোগ করুন।
স্পেসিফিকেশন
Apigee 502 Bad Gateway ত্রুটি প্রতিক্রিয়া জানায়, কারণ এটি আশা করে যে ব্যাকএন্ড সার্ভারটি নিম্নলিখিত RFC স্পেসিফিকেশন অনুযায়ী কাজ করবে:
| স্পেসিফিকেশন |
|---|
| আরএফসি ৭২৩০, ধারা ৩.২.২: ফিল্ড অর্ডার |
| আরএফসি ৭২৩০, ধারা ৩.২: হেডার ফিল্ড |
আপনার যদি এখনও Apigee Support-এর কাছ থেকে কোনো সাহায্যের প্রয়োজন হয়, তাহলে Must gather diagnostic information- এ যান।
রোগ নির্ণয়ের তথ্য অবশ্যই সংগ্রহ করতে হবে
নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন, এবং তারপর Apigee Edge Support-এর সাথে যোগাযোগ করুন।
আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:
- সংস্থার নাম
- পরিবেশের নাম
- এপিআই প্রক্সি নাম
-
502ত্রুটিটি পুনরুৎপাদন করতে ব্যবহৃত সম্পূর্ণcurlকমান্ড। - এপিআই অনুরোধগুলির ট্রেস ফাইল
আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:
- ব্যর্থ অনুরোধগুলির জন্য সম্পূর্ণ ত্রুটি বার্তা পরিলক্ষিত হয়েছে।
- পরিবেশের নাম
- এপিআই প্রক্সি বান্ডেল
- এপিআই অনুরোধগুলির ট্রেস ফাইল
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