আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
সমস্যার উপসর্গ
API কলের উত্তর হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশন 502 Bad Gateway HTTP স্ট্যাটাস কোড পায়, যার সাথে
protocol.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, বিভাগ ৩.২.২: ফিল্ডের ক্রমঅনুযায়ী, প্রেরককে কোনও মেসেজে একই ফিল্ডের নাম সহ একাধিক হেডার
ফিল্ড তৈরি করা চলবে না, যদি না সেই হেডার ফিল্ডের সম্পূর্ণ ভ্যালু কমা-সেপারেটেড তালিকা হিসেবে
সংজ্ঞায়িত করা হয়, [যেমন, #(values)] অথবা হেডার ফিল্ড হল একটি
সুপরিচিত ব্যতিক্রম। Apigee Edge যদি দেখে যে, কোনও নির্দিষ্ট একই হেডার, যার ডুপ্লিকেট থাকার অনুমতি নেই,
সেটি টার্গেট/ব্যাকএন্ড সার্ভারের পাঠানো HTTP রেসপন্সে একাধিকবার পাঠানো হয়েছে,
তাহলে এটি 502 Bad Gateway ও সমস্যা কোড
protocol.http.DuplicateHeader দিয়ে উত্তর দেয়
এই সমস্যার সম্ভাব্য কারণগুলি এখানে দেওয়া হল:
| কারণ | বিবরণ | এর জন্য প্রযোজ্য সমস্যার সমাধান সংক্রান্ত নির্দেশাবলী |
|---|---|---|
| উত্তরে ডুপ্লিকেট হেডার | ব্যাকএন্ড সার্ভারের উত্তর ডুপ্লিকেট হেডার রয়েছে। | এজ পাবলিক ও প্রাইভেট ক্লাউড ব্যবহারকারী |
সাধারণ ডায়াগনসিস ধাপ
এই সমস্যা ডায়াগনসিস করতে নিম্নলিখিত টুল/টেকনিকের মধ্যে একটি ব্যবহার করুন:
API মনিটরিং
API মনিটরিং ব্যবহার করে সমস্যার ডায়াগনসিস করতে:
- Apigee Edge UI-তে সাইন-ইন করুন উপযুক্ত ভূমিকা সহ ব্যবহারকারী হিসেবে।
যে প্রতিষ্ঠানে সমস্যাটি তদন্ত করতে চান সেটিতে পরিবর্তন করুন।

- বিশ্লেষণ করুন > API মনিটরিং > তদন্ত করুন পৃষ্ঠায় নেভিগেট করুন।
- আপনি যে নির্দিষ্ট সময়সীমার মধ্যে সমস্যাটি লক্ষ্য করেছেন সেটি বেছে নিন।
- প্রক্সি ফিল্টার সব হিসেবে সেট করা আছে কিনা তা নিশ্চিত করুন।
- সময় অনুযায়ী সমস্যার কোড প্লট করুন।
নিচে দেখানো
protocol.http.DuplicateHeaderফল্ট কোড আছে এমন একটি সেল বেছে নিন:
নিচে দেখানো পদ্ধতিতে ফল্ট কোড
protocol.http.DuplicateHeaderসম্পর্কিত তথ্য দেখানো হয়:
- নিশ্চিত করুন যে উপরে দেখানো উদাহরণে স্ট্যাটাস কোড
502হিসেবে দেখানো হয়েছে। - লগ দেখুন বিকল্পে ক্লিক করুন এবং ব্যর্থ অনুরোধের সারিটি বড় করে দেখুন।
'লগ' উইন্ডো থেকে, নিম্নলিখিত বিবরণগুলি নোট করুন:
- স্ট্যাটাস কোড:
502 - সমস্যার সোর্স:
target - সমস্যার কোড:
protocol.http.DuplicateHeader.
- স্ট্যাটাস কোড:
- সমস্যার সোর্স হল
target, যা থেকে বোঝা যায় যে ব্যাকএন্ড সার্ভারের উত্তর ডুপ্লিকেট হেডার রয়েছে।
ট্রেস টুল
Trace টুল ব্যবহার করে সমস্যার ডায়াগনসিস করতে:
- ট্রেস সেশন চালু করুন এবং এগুলির মধ্যে একটি করুন:
502 Bad Gatewayসমস্যার জন্য অপেক্ষা করুন অথবা- আপনি যদি সমস্যাটি আবার তৈরি করতে পারেন, তাহলে API কল করুন এবং
502 Bad Gatewayসমস্যাটি
সব ফ্লো সংক্রান্ত তথ্য দেখুন বিকল্প চালু আছে কিনা দেখুন:

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

ট্রেস থেকে পাওয়া ত্রুটির ভ্যালু নোট করুন।
উপরের নমুনা ট্রেসে সমস্যাটি
Duplicate Header "Expires"হিসেবে দেখানো হয়েছে। যেহেতু ব্যাকএন্ড সার্ভারে অনুরোধ পাঠানোর পরে Apigee-এর মাধ্যমে সমস্যাটি তৈরি করা হয়েছে, এটি ইঙ্গিত করে যে ব্যাকএন্ড সার্ভারExpiresহেডারটি একাধিকবার পাঠিয়েছে।- ট্রেসে AX (Analytics ডেটা রেকর্ড করা হয়েছে) ফেজে নেভিগেট করে সেটিতে ক্লিক করুন।
নিচের দিকে স্ক্রল করে ফেজ বিবরণ - রেসপন্স হেডার বিভাগে যান এবং নিচে দেখানো X-Apigee-fault-code ও X-Apigee-fault-source-এর ভ্যালু নির্ধারণ করুন:

- আপনি X-Apigee-fault-code এবং X-Apigee-fault-source-এর ভ্যালু
protocol.http.DuplicateHeaderএবংtargetহিসেবে দেখতে পাবেন, এর থেকে বোঝা যায় যে এই সমস্যাটি হয়েছে কারণ ব্যাকএন্ড সার্ভারExpiresরেসপন্স হেডারের জন্য ডুপ্লিকেট হেডার পাস করেছে।রেসপন্স হেডার ভ্যালু X-Apigee-fault-code protocol.http.DuplicateHeaderX-Apigee-fault-source target আপনি প্রক্সি চেইনিং ব্যবহার করছেন কিনা তা চেক করুন; অর্থাৎ, টার্গেট সার্ভার বা টার্গেট এন্ডপয়েন্ট Apigee-তে অন্য কোনও প্রক্সি ইনভোক করছে কিনা।
এটি নির্ধারণ করতে, টার্গেটে পাঠানো অনুরোধ সার্ভার ফেজে ফিরে যান। Curl দেখুন বিকল্পে ক্লিক করুন।
টার্গেট সার্ভারে পাঠানো অনুরোধের জন্য Curl উইন্ডো খোলে, যেখান থেকে আপনি টার্গেট সার্ভার হোস্টের ছদ্মনাম নির্ধারণ করতে পারবেন।
- টার্গেট সার্ভার হোস্ট এলিয়াস যদি ভার্চুয়াল হোস্ট এলিয়াসের দিকে পয়েন্ট করে, তাহলে এটি হল প্রক্সি
চেনিং। এই ক্ষেত্রে, চেইন করা প্রক্সির জন্য আপনাকে উপরের সব ধাপ রিপিট করতে হবে, যতক্ষণ না
আপনি নির্ধারণ করতে পারছেন যে আসলে কী কারণে
502 Bad Gatewayসমস্যা হচ্ছে। - টার্গেট সার্ভার হোস্ট অ্যালিয়াস আপনার ব্যাকএন্ড সার্ভারের দিকে পয়েন্ট করলে, এটি ইঙ্গিত করে যে আপনার ব্যাকএন্ড সার্ভার Apigee-কে দেওয়া উত্তরে ডুপ্লিকেট হেডার পাঠাচ্ছে।
NGINX
NGINX অ্যাক্সেস লগ ব্যবহার করে সমস্যার ডায়াগনসিস করতে:
- আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, HTTP
502সমস্যার ব্যাপারে মূল তথ্য নির্ধারণ করতে আপনি NGINX অ্যাক্সেস লগ ব্যবহার করতে পারবেন। NGINX অ্যাক্সেস লগ চেক করুন:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logকোথায়: ORG, ENV এবং PORT#-এর জায়গায় আসল ভ্যালু বসাতে হবে।
- নির্দিষ্ট সময়সীমার মধ্যে কোনও
502সমস্যা হয়েছে কিনা তা সার্চ করে দেখুন (যদি সমস্যাটি আগে হয়ে থাকে) অথবা এখনও কোনও অনুরোধ502সহ ব্যর্থ হচ্ছে কিনা তা দেখুন। আপনি যদি X-Apigee-fault-code
protocol.http.DuplicateHeader-এর ভ্যালুর সাথে ম্যাচ করা502কোনও সমস্যা খুঁজে পান, তাহলে X-Apigee-fault-source-এর ভ্যালু নির্ধারণ করুন।NGINX অ্যাক্সেস লগ থেকে 502 সমস্যার নমুনা:
NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিতে X- Apigee-fault-code ও X-Apigee-fault-source:-এর জন্য নিম্নলিখিত ভ্যালু আছে
রেসপন্স হেডার ভ্যালু X-Apigee-fault-code protocol.http.DuplicateHeaderX-Apigee-fault-source target
কারণ: উত্তরে ডুপ্লিকেট হেডার
ডায়াগনসিস
- API মনিটরিং বা NGINX অ্যাক্সেস লগ ব্যবহার করে দেখা সমস্যার জন্য সমস্যার কোড ও সমস্যার সোর্স নির্ধারণ করুন, যা সমস্যার সাধারণ ডায়াগনসিস ধাপ-এ ব্যাখ্যা করা হয়েছে।
- সমস্যার সোর্স-এর ভ্যালু
targetহলে, এটি ইঙ্গিত করে যে টার্গেট সার্ভারের পাঠানো উত্তরে ডুপ্লিকেট হেডার আছে। আপনি নিম্নলিখিত পদ্ধতির মধ্যে একটি ব্যবহার করে, উত্তরের অংশ হিসেবে একাধিকবার পাঠানো প্রকৃত হেডার নির্ধারণ করতে পারবেন:
সমস্যা সংক্রান্ত মেসেজ
সমস্যার মেসেজ ব্যবহার করে:
Apigee Edge থেকে পাওয়া সম্পূর্ণ সমস্যার মেসেজে আপনার অ্যাক্সেস থাকলে,
faultstring-এ দেখুন।faultstring-এ হেডার নাম আছে যা একাধিকবার পাঠানো হয়েছে।সমস্যার মেসেজের নমুনা:
"faultstring":"Duplicate Header \"Expires\""
- উপরের সমস্যার মেসেজে, আপনি দেখতে পাবেন যে হেডার
Expiresএকাধিকবার পাঠানো হয়েছে যাfaultstring-এ দেখা যাচ্ছে।
আসল অনুরোধ
আসল অনুরোধ ব্যবহার করে:
- টার্গেট সার্ভারে করা আসল অনুরোধে আপনার অ্যাক্সেস না থাকলে, তাহলে
ট্রেস টুল ব্যবহার করা ধাপ ১০.ক এবং
ধাপ ১০.খ থেকে সংশ্লিষ্ট
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এবং API প্রক্সি সেটি গ্রহণ করতে পারবে কিনা তা যাচাই করুন। বেশিরভাগ ক্ষেত্রে, HTTP স্পেসিফিকেশন RFC7230 অনুযায়ী এটি কাম্য নয়। - এটি অবাঞ্ছিত হলে, ডুপ্লিকেট হেডার না পাঠানোর জন্য আপনার টার্গেট সার্ভার অ্যাপ্লিকেশন পরিবর্তন করুন।
উপরে আলোচনা করা উদাহরণে, এটি লক্ষ্য করা গেছে যে হেডার
Expiresএকই মান সহ দুবার পাঠানো হয়েছে, যা কাম্য নয়। টার্গেট সার্ভার যেনExpiresহেডার একবারই পাস করে তা নিশ্চিত করে আপনি এই সমস্যার সমাধান করতে পারবেন। - এটি কাঙ্ক্ষিত হলে এবং আপনি ডুপ্লিকেট হেডারকে অনুমতি দিতে চাইলে, বিকল্প #২ CwC প্রপার্টি ব্যবহার করা বিকল্পে যান।
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 সহায়তা টিমের সাথে যোগাযোগ করুন ।
স্পেসিফিকেশন
Apigee 502 Bad Gateway সমস্যার উত্তর দেয় কারণ এটি আশা করে যে
ব্যাকএন্ড সার্ভার নিম্নলিখিত RFC স্পেসিফিকেশন অনুযায়ী আচরণ করবে:
| স্পেসিফিকেশন |
|---|
| RFC 7230, section 3.2.2: Field Order |
| RFC 7230, section 3.2: Header Fields |
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