ডুপ্লিকেট হেডারকে অনুমতি দেওয়ার জন্য মেসেজ প্রসেসর কনফিগার করা

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

HTTP স্পেসিফিকেশন RFC 7230, বিভাগ 3.2.2: ফিল্ড অর্ডার অনুযায়ী, Apigee Edge আশা করে যে ক্লায়েন্টের থেকে HTTP অনুরোধ বা ব্যাকএন্ড সার্ভারের থেকে HTTP উত্তরে একই হেডার একাধিকবার একই বা আলাদা আলাদা ভ্যালু সহ পাস করা হবে না, যদি না নির্দিষ্ট হেডারে কোনও ব্যতিক্রম থাকে এবং ডুপ্লিকেট থাকার অনুমতি থাকে।

সাধারণত, Apigee Edge, বেশিরভাগ HTTP হেডারে ডুপ্লিকেট ও একাধিক ভ্যালু পাস করার অনুমতি দেয়। তবে, এটি নির্দিষ্ট কিছু হেডারকে অনুমতি দেয় না যা ডুপ্লিকেট ও একাধিক ভ্যালু থাকতে পারে না এমন হেডার-এ তালিকাভুক্ত করা হয়েছে। সুতরাং:

  • ক্লায়েন্ট যদি নির্দিষ্ট হেডার সহ HTTP অনুরোধ একাধিকবার পাঠায় অথবা HTTP হেডারের একাধিক ভ্যালু পাঠায়, যেগুলি Apigee Edge-এ ডুপ্লিকেট/একাধিক ভ্যালু হিসেবে থাকার অনুমতি পায় না, তাহলে আপনি 400 Bad Request সমস্যার কোড protocol.http.DuplicateHeader পাবেন।
  • একইভাবে, ব্যাকএন্ড সার্ভার যদি নির্দিষ্ট হেডার একাধিকবার বা HTTP হেডারের একাধিক ভ্যালু সহ HTTP উত্তর পাঠায়, তাহলে আপনি 502 Bad Gateway protocol.http.DuplicateHeader সহ error code পাবেন। এগুলি Apigee Edge-এ ডুপ্লিকেট বা একাধিক ভ্যালু হিসেবে থাকার অনুমতি পায় না

এইসব সমস্যার সমাধান করার জন্য সাজেস্ট করা সমাধান হল ক্লায়েন্ট অ্যাপ্লিকেশন ও ব্যাকএন্ড সার্ভার ঠিক করা যাতে ডুপ্লিকেট হেডার না পাঠানো হয় এবং স্পেসিফিকেশন RFC 7230, বিভাগ 3.2.2: ফিল্ড অর্ডার মেনে চলা হয়, যা নিম্নলিখিত সমস্যা সমাধানকারী প্লেবুকে ব্যাখ্যা করা হয়েছে:

তবে, কিছু ক্ষেত্রে, আপনি ডুপ্লিকেট এবং একাধিক মান অন্তর্ভুক্ত করার জন্য কিছু HTTP হেডার যোগ করতে চাইতে পারেন। এই ধরনের পরিস্থিতিতে, আপনি মেসেজ প্রসেসর লেভেলে HTTPHeader.HEADER_NAME একটি প্রপার্টি সেট করে নির্দিষ্ট HTTP হেডার জন্য ডুপ্লিকেট হেডার ও একাধিক ভ্যালু অনুমোদন করতে পারেন।

এই ডকুমেন্ট এই প্রপার্টি সম্পর্কে তথ্য প্রদান করে, উপরে উল্লেখ করা সমস্যা এড়াতে কীভাবে এই প্রপার্টি চালু করতে হয় তা ব্যাখ্যা করে এবং এই বিষয়ে পেশাদার পদ্ধতি শেয়ার করে।

ডুপ্লিকেট ও একাধিক ভ্যালু অনুমোদন করার জন্য HTTP হেডার প্রপার্টি

HTTP হেডার ডুপ্লিকেট ও একাধিক ভ্যালু ব্যবহার করার অনুমতি দেওয়ার আচরণ কন্ট্রোল করতে Apigee Edge নিম্নলিখিত দুটি প্রপার্টি প্রদান করে। মনে রাখবেন, এগুলি শুধুমাত্র Edge কীভাবে কনফিগার করতে হয় লিঙ্কে ব্যাখ্যা করা টোকেন সিনট্যাক্স ব্যবহার করে মেসেজ প্রসেসরে কনফিগার করা যেতে পারে।

প্রপার্টির নাম বিবরণ অনুমোদিত ভ্যালু
HTTPHeader.ANY

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

ডিফল্ট মান:

multiValued, allowDuplicates,

  1. blank: HTTP হেডারের জন্য ডুপ্লিকেট ও একাধিক ভ্যালু ব্যবহার করা যাবে না।
  2. multiValued: একাধিক ভ্যালু থাকা হেডারকে একাধিক হেডারে ভাগ করুন। HTTP হেডার একাধিক ভ্যালু নিতে পারে, তবে ডুপ্লিকেট ভ্যালু নেওয়া যাবে না। multiValued ভ্যালু চালু করা আছে, এর অর্থ হল test-header=a,b test-header=a ও test-header=b.-এ কনভার্ট করা হবে
  3. allowDuplicates: একই নামের একাধিক (ডুপ্লিকেট) HTTP হেডারকে অনুমতি দেয়।
  4. multiValued, allowDuplicates: HTTP হেডারে একাধিক ভ্যালু ও ডুপ্লিকেট, দুটিই ব্যবহার করা যায়।

HTTPHeader.HEADER_NAME

HTTPHeader.ANY-এর মাধ্যমে নির্দিষ্ট করা আচরণ থেকে কোনও নির্দিষ্ট হেডারকে ওভাররাইড করতে এই প্রপার্টি ব্যবহার করা হয়

উপরে উল্লেখ করা ধাপগুলি অনুসরণ করুন।

ডুপ্লিকেট ও একাধিক ভ্যালু থাকতে পারে না এমন হেডার

আগে ব্যাখ্যা করা হয়েছে, Apigee Edge ডিফল্ট হিসেবে বেশিরভাগ HTTP হেডারের জন্য ডুপ্লিকেট ও একাধিক ভ্যালু অনুমোদন করে। এর কারণ হল, প্রপার্টি HTTPHeader.ANY-এ multiValued, allowDuplicates. ভ্যালু কনফিগার করা আছে

কনফিগারেশন ওভাররাইট করা হয়েছে

কিছু নির্দিষ্ট হেডার জন্য, নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে ডিফল্ট কনফিগারেশন ওভাররাইট করা হয়:

  • HTTPHeader.HEADER_NAME=multiValued, allowDuplicates

    এই কনফিগারেশন ডিফল্ট আচরণ পরিবর্তন করে না। অর্থাৎ, নির্দিষ্ট হেডারটি ডুপ্লিকেট ও একাধিক ভ্যালু থাকতে পারে

    ।
  • HTTPHeader.HEADER_NAME=

    এই কনফিগারেশন ডিফল্ট আচরণ পরিবর্তন করে। অর্থাৎ, নির্দিষ্ট হেডারে ডুপ্লিকেট ও একাধিক ভ্যালু ব্যবহার করা যায় না।

ডুপ্লিকেট ও একাধিক ভ্যালু থাকতে পারে না এমন হেডার নির্ধারণ করা

এই বিভাগে নিম্নলিখিত বিষয়গুলি কীভাবে শনাক্ত করতে হয় তা বর্ণনা করা হয়েছে:

  • আপনার Apigee Edge প্রাইভেট ক্লাউড সেট-আপে ডুপ্লিকেট ও একাধিক ভ্যালু থাকতে পারে না এমন নির্দিষ্ট হেডার এবং
  • আগে থেকে থাকা কনফিগারেশন সহ নির্দিষ্ট হেডার
  1. Message Processor মেশিনে, নিচে দেখানো মতো HTTPHeader. প্রপার্টিটি /opt/apigee/edge-message-processor/conf ডিরেক্টরিতে খুঁজুন:

    grep -ri "HTTPHeader." /opt/apigee/edge-message-processor/conf
    

    স্যাম্পেল আউটপুট:

    # grep -ri "HTTPHeader" /opt/apigee/edge-message-processor/conf
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.ANY=allowDuplicates, multiValued
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Connection=allowDuplicates, multiValued
    … <snipped>
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Host=
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Date=allowDuplicates
    …
    <snipped>
  2. কনফিগারেশন ওভাররাইট করা বিভাগে ব্যাখ্যা করা হয়েছে, উপরের নমুনা আউটপুটে নিম্নলিখিত তথ্যগুলি নোট করুন:
    1. HTTP হেডার Connection ওভাররাইট করা হয়েছে, কিন্তু ডুপ্লিকেট ও একাধিক ভ্যালু থাকতে পারে
    2. HTTP হেডার Host এবং Expires ওভাররাইট করা হয় এবং এগুলিতে ডুপ্লিকেট ও একাধিক ভ্যালু রাখার অনুমতি নেই
    3. HTTP হেডার Date ওভাররাইট করা হয় এবং ডুপ্লিকেট থাকতে পারে কিন্তু একাধিক ভ্যালু থাকতে পারে না
    4. এখানে দেখানো সব হেডারকে (Connection, Host, Expires এবং Date উপরের স্যাম্পেলে) এই ডকুমেন্টে আগে থেকে থাকা কনফিগারেশন সহ হেডার হিসেবে উল্লেখ করা হয়েছে।

Apigee Edge-এর আচরণ

নিচের টেবিলে Apigee Edge-এর আচরণ বর্ণনা করা হয়েছে, যখন হেডারগুলি ডুপ্লিকেট হিসেবে এবং একাধিক ভ্যালু সহ পাঠানো হয়, এটি নির্ভর করে কীভাবে HTTPHeader প্রপার্টিগুলি মেসেজ প্রসেসরে কনফিগার করা হয়েছে তার উপর, সাথে একটি HTTPHeader উদাহরণ test-header দেওয়া হয়েছে।

অনুরোধ করুন conf/http.properties+HTTPHeader.test-header=-এর ভ্যালুর উপর ভিত্তি করে আউটগোয়িং HEADERS
<Blank> allowDuplicates multiValued allowDuplicates, multiValued (ডিফল্ট)
test‑header=a,b test‑header=a,b test‑header=a,b

protocol.http.
DuplicateHeader

ইন্টার্নালি আমরা test-header=a,b-কে এগুলিতে ভাগ করি:

  • test-header=a, এবং
  • test-header=b,

এবং তারপরে DuplicateHeader সমস্যাটি দেখানো হয়।

test‑header=a,b

অভ্যন্তরীণভাবে আমরা test-header=a,b-কে এগুলিতে ভাগ করি:

  • test-header=a, এবং
  • test-header=b,

কিন্তু তারপরে আসল ফর্মটি টার্গেটে পাঠানো হয়।

test‑header=a
test‑header=b
protocol.http.
DuplicateHeader
test‑header=a
test‑header=b
protocol.http.
DuplicateHeader
test‑header=a
test‑header=b

শুরু করার আগে

এই ডকুমেন্টে দেওয়া ধাপগুলি ব্যবহার করার আগে, নিশ্চিত করুন যে আপনি প্রাইভেট ক্লাউডে Edge-এর জন্য প্রপার্টি কনফিগার করা সম্পর্কে বুঝেছেন, যা Edge কীভাবে কনফিগার করতে হয় নিবন্ধে বর্ণনা করা হয়েছে।

হেডারের জন্য allowDuplicates ও একাধিক ভ্যালু কনফিগার করা

ডুপ্লিকেট ও একাধিক ভ্যালু অনুমোদন করার জন্য HTTP হেডার প্রপার্টি নিবন্ধে ব্যাখ্যা করা হয়েছে, প্রপার্টির ভ্যালু HTTPHeader.ANY = allowDuplicates, multiValued থেকে বোঝা যায় যে Apigee Edge-এ সব হেডারে ডুপ্লিকেট ও একাধিক ভ্যালু থাকতে পারে। তবে, এমন কিছু হেডার আছে যেগুলির ভ্যালু স্পষ্টভাবে ওভাররাইট করা হয় যাতে HTTPHeader.HEADER_NAME প্রপার্টি ব্যবহার করে ডুপ্লিকেট হেডার বা একাধিক ভ্যালু ব্যবহার না করা যায়।

এই বিভাগে, Edge কীভাবে কনফিগার করতে হয় লিঙ্কে বর্ণিত সিনট্যাক্স অনুযায়ী, মেসেজ প্রসেসরের কোনও HTTP হেডারের জন্য ডুপ্লিকেট ও একাধিক ভ্যালু অনুমোদনের জন্য HTTPHeader.HEADER_NAME প্রপার্টি কীভাবে কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে।

এই বিভাগে, আমরা Expires (এবং myheader)-কে উদাহরণ হিসেবে ব্যবহার করব হেডার, যার জন্য আমরা নিচে ব্যাখ্যা করা অনুযায়ী ডুপ্লিকেট ও একাধিক ভ্যালু অনুমোদন করতে চাই:

  1. প্রপার্টির বর্তমান ভ্যালু নির্ধারণ করুন HTTPHeaderHEADER_NAME যাতে এটি আগে থেকেই ডুপ্লিকেট ও একাধিক ভ্যালু অনুমোদনের জন্য চালু করা না থাকে তা নিশ্চিত করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:
    grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
    

    যেমন, আপনি যদি Expires হেডার জন্য প্রপার্টি সেট করার চেষ্টা করেন, তাহলে মেসেজ প্রসেসরে প্রপার্টি HTTPHeader.Expires টোকেনের বর্তমান ভ্যালু চেক করুন:

    grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
    

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

    1. প্রপার্টিটি ফাঁকা সেট করা থাকলে, এর অর্থ হল ভ্যালু ওভাররাইট করা হয়েছে (এবং এটি আগে থেকে থাকা কনফিগারেশন সহ একটি হেডার) যাতে ডুপ্লিকেট হেডার ও একাধিক ভ্যালু না থাকে। অর্থাৎ, Apigee-তে HTTP অনুরোধ বা HTTP উত্তরের অংশ হিসেবে আপনি Expires হেডারটি একাধিকবার পাঠাতে পারবেন না।
    2. নির্দিষ্ট প্রপার্টির জন্য কোনও হিট না থাকলে, তার মানে হল ভ্যালু ওভাররাইট করা হয়নি (এবং এটি আগে থেকে থাকা কনফিগারেশন সহ হেডার নয়)। এর অর্থ হল HTTP অনুরোধ বা Apigee Edge-এ HTTP উত্তরের অংশ হিসেবে নির্দিষ্ট হেডারটি একাধিকবার পাঠানো যেতে পারে (ডুপ্লিকেট করার অনুমতি আছে)।
    3. প্রপার্টিটি allowDuplicates, multiValued ভ্যালু দিয়ে সেট করা হয়েছে, তারপর এর অর্থ হল, ভ্যালুটি সুস্পষ্টভাবে ওভাররাইট করা হয়েছে (এবং এটি আগে থেকে থাকা কনফিগারেশন সহ হেডার)। এর অর্থ হল, Apigee-তে HTTP অনুরোধ বা HTTP উত্তরের অংশ হিসেবে নির্দিষ্ট হেডার একাধিকবার পাঠানো যেতে পারে (ডুপ্লিকেট পাঠানো যায়)।

    সার্চ কমান্ডের স্যাম্পেল আউটপুট:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=

    উপরের নমুনা আউটপুট থেকে দেখা যাচ্ছে যে HTTPHeader.Expires প্রপার্টিটি খালি হিসেবে সেট করা আছে। এর অর্থ হল, Expires হেডার ডুপ্লিকেট বা একাধিক ভ্যালু ব্যবহার করার অনুমতি না দেওয়ার জন্য প্রপার্টি ওভাররাইট করা হয়েছে।

  2. আপনি যদি লক্ষ্য করেন যে নির্দিষ্ট শীর্ষকের সাথে সম্পর্কিত প্রপার্টি স্পষ্টভাবে ওভাররাইট করা হয়েছে যাতে ডুপ্লিকেট বা একাধিক ভ্যালু না থাকে, যেমন উপরে দেওয়া আউটপুটের উদাহরণে দেখানো হয়েছে, তবেই নিম্নলিখিত ধাপগুলি অনুসরণ করুন। এটি স্পষ্টভাবে ওভাররাইট করা না হলে, এই বিভাগের বাকি ধাপগুলি এড়িয়ে যান।
  3. এডিট করুন। এটি না থাকলে, আপনি এটি তৈরি করতে পারবেন:
    /opt/apigee/customer/application/message-processor.properties

    যেমন, vi ব্যবহার করে ফাইল খুলতে, নিম্নলিখিত কমান্ড লিখুন:

    vi /opt/apigee/customer/application/message-processor.properties
    
  4. নিম্নলিখিত ফর্ম্যাটে একটি লাইন যোগ করুন:
    conf_http_HTTPHeader.Expires=allowDuplicates, multiValued
  5. আপনার করা পরিবর্তন সেভ করুন।
  6. apigee ব্যবহারকারীর মালিকানাধীন প্রপার্টি ফাইল আছে কিনা তা নিশ্চিত করুন। এটি না হলে, নিম্নলিখিত কমান্ডটি এক্সিকিউট করুন:

    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  7. মেসেজ প্রসেসর রিস্টার্ট করুন:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    

    ট্রাফিকের উপর প্রভাব না ফেলে রিস্টার্ট করতে, ট্রাফিকের উপর প্রভাব না ফেলে মেসেজ প্রসেসর রোলিং রিস্টার্ট করা দেখুন।

  8. আপনার কাছে একাধিক মেসেজ প্রসেসর থাকলে, সব মেসেজ প্রসেসরের জন্য উপরের ধাপগুলি রিপিট করুন।

যাচাই করা হচ্ছে যে হেডার ডুপ্লিকেট ও একাধিক ভ্যালু সহ কনফিগার করা হয়েছে কিনা

এই বিভাগে কীভাবে যাচাই করতে হয় যে মেসেজ প্রসেসরে ডুপ্লিকেট কন্টেন্ট অনুমোদনের জন্য নির্দিষ্ট হেডার সংক্রান্ত প্রপার্টিHTTPHeader.HEADER_NAME সফলভাবে আপডেট করা হয়েছে তা ব্যাখ্যা করা হয়েছে।

আমরা Expires-কে উদাহরণ হেডার হিসেবে ব্যবহার করব এবং সংশ্লিষ্ট প্রপার্টি HTTPHeader.Expires আপডেট করা হয়েছে কিনা তা চেক করব।

আপনি মেসেজ প্রসেসরের ভ্যালু আপডেট করার জন্য conf_http_HTTPHeader.Expires টোকেন ব্যবহার করলেও, আপনাকে যাচাই করে দেখতে হবে যে প্রকৃত প্রপার্টি HTTPHeader.Expires নতুন ভ্যালু দিয়ে সেট করা হয়েছে কিনা।

  1. মেসেজ প্রসেসর মেশিনে, প্রপার্টিটি HTTPHeader.HEADER_NAME ডিরেক্টরিতে /opt/apigee/edge-message-processor/conf খুঁজে দেখুন এবং নিচে দেখানো নতুন ভ্যালু দিয়ে সেটি সেট করা হয়েছে কিনা চেক করুন:
    grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
    

    যেমন, আপনি যদি চেক করতে চান যে প্রপার্টি HTTPHeader.Expires নতুন ভ্যালু দিয়ে সেট করা হয়েছে, তাহলে নিম্নলিখিত কমান্ড রান করান:

    grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
    
  2. মেসেজ প্রসেসরের জন্য HTTPHeader.HEADER_NAME চালু করা হলে, উপরের কমান্ডটি http.properties ফাইলে নতুন ভ্যালু দেখায়।
  3. আপনি allowDuplicates ও multiValued কনফিগার করার পরে উপরের কমান্ড থেকে পাওয়া নমুনা ফলাফল নিচে দেওয়া হল:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=allowDuplicates, multiValued
  4. উপরের আউটপুটের উদাহরণে, মনে রাখবেন যে প্রপার্টি HTTPHeader.Expires-এর সাথে http.properties-এ নতুন ভ্যালু allowDuplicates, multiValued সেট করা হয়েছে। এটি থেকে বোঝা যায় যে মেসেজ প্রসেসরে HTTPHeader-এ ডুপ্লিকেট ও একাধিক ভ্যালু অনুমোদনের আচরণ সফলভাবে কনফিগার করা হয়েছে।
  5. আপনি যদি এখনও প্রপার্টির জন্য পুরনো ভ্যালু HTTPHeader.HEADER_NAME দেখতে পান, তাহলে নিশ্চিত করুন যে আপনি হেডারের জন্য allowDuplicates এবং একাধিক ভ্যালু কনফিগার করা সঠিকভাবে বর্ণনা করা সমস্ত ধাপ অনুসরণ করেছেন। আপনি কোনও ধাপ মিস করে থাকলে, সঠিকভাবে আবার সব ধাপ রিপিট করুন।

    আপনার প্রক্সি প্রত্যাশিতভাবে কাজ করছে কিনা তা নিশ্চিত করুন, বিশেষ করে প্রক্সিতে হেডার পাওয়ার ও সেট করার জন্য কোনও কার্যকরী লজিক থাকলে।

  6. আপনি এখনও প্রপার্টি পরিবর্তন করতে না পারলে, Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন

হেডারের জন্য allowDuplicates বন্ধ করা

এই বিভাগে, মেসেজ প্রসেসরের নির্দিষ্ট HTTP হেডারের জন্য HTTPHeader.{Headername}ডুপ্লিকেট ও একাধিক ভ্যালু না রাখার প্রপার্টি কনফিগার করার পদ্ধতি ব্যাখ্যা করা হয়েছে। এটি Edge কীভাবে কনফিগার করতে হয় লিঙ্কে বর্ণিত সিনট্যাক্স অনুযায়ী সংশ্লিষ্ট টোকেন ব্যবহার করে করা হয়।

এই বিভাগে, আমরা Expires (এবং myheader)-কে উদাহরণ হিসেবে ব্যবহার করব হেডার, যার জন্য আমরা নিচে ব্যাখ্যা করা ডুপ্লিকেট কন্টেন্ট অনুমোদন করতে চাই না:

  1. প্রপার্টির বর্তমান ভ্যালু নির্ধারণ করুনHTTPHeaderHEADER_NAME যাতে ডুপ্লিকেট ও একাধিক ভ্যালু অনুমোদনের জন্য এটি আগে থেকেই বন্ধ করা না থাকে তা নিশ্চিত করা যায় নিচের কমান্ড ব্যবহার করে:
    grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
    

    যেমন, আপনি যদি Expires হেডার জন্য প্রপার্টি সেট করার চেষ্টা করেন, তাহলে মেসেজ প্রসেসরে প্রপার্টি HTTPHeader.Expires টোকেনের বর্তমান মান চেক করুন:

    grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
    

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

    1. প্রপার্টি ফাঁকা সেট করা থাকলে, এর অর্থ হল, ডুপ্লিকেট হেডার ও একাধিক ভ্যালু অনুমোদিত করতেভ্যালু ওভাররাইট করে NOT করা হয়েছে। অর্থাৎ, আপনি Apigee-তে HTTP অনুরোধ বা HTTP উত্তরের অংশ হিসেবে Expires হেডার একাধিকবার পাঠাতে পারবেন না।
    2. নির্দিষ্ট প্রপার্টির জন্য কোনও হিট না থাকলে, এর অর্থ হল, ভ্যালু ওভাররাইট করা হয়নি এবং এটি আগে থেকে থাকা কনফিগারেশন সহ একটি NOT হেডার। এর অর্থ হল HTTP অনুরোধ বা Apigee Edge-এ HTTP উত্তরের অংশ হিসেবে নির্দিষ্ট হেডার একাধিকবার পাঠানো যেতে পারে (ডুপ্লিকেট পাঠানো যায়)।
    3. প্রপার্টিতে allowDuplicates, multiValued ভ্যালু সেট করা থাকলে, তার মানে হল, ভ্যালু সুস্পষ্টভাবে ওভাররাইট করা হয়েছে এবং এটি একটি বিদ্যমান কনফিগারেশন। তবে, এর অর্থ হল, Apigee-তে HTTP অনুরোধ বা HTTP উত্তরের অংশ হিসেবে নির্দিষ্ট হেডারটি একাধিকবার পাঠানো যেতে পারে (ডুপ্লিকেট অনুমোদিত)।

    স্যাম্পেল আউটপুট #১

    সার্চ কমান্ডের নমুনা আউটপুট #১:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=allowDuplicates, multiValued

    স্যাম্পেল আউটপুট থেকে দেখা যাচ্ছে যে HTTPHeader.Expires প্রপার্টিটি allowDuplicates, multiValued হিসেবে সেট করা আছে। এর অর্থ হল, হেডার Expires-এর জন্য ডুপ্লিকেট বা একাধিক ভ্যালু দেওয়ার অনুমতি দিতে ওভাররাইট করা হয়েছে।

    স্যাম্পেল আউটপুট #২

    সার্চ কমান্ডের নমুনা কমান্ড ও আউটপুট #২

    grep -ri "HTTPHeader.myheader" /opt/apigee/edge-message-processor/conf
    

    স্যাম্পেল আউটপুটে কোনও আউটপুট দেখানো হয়নি, এর অর্থ হল, প্রপার্টি HTTPHeader.myheader ডিফল্ট হিসেবে allowDuplicates, multiValued-এ সেট করা আছে। এর অর্থ হল, myheader-এর জন্য প্রপার্টি ওভাররাইট করা হয় না ,

  2. আপনি যদি নিম্নলিখিতগুলির মধ্যে কোনও একটি লক্ষ্য করেন, তাহলে এই বিভাগে বাকি ধাপগুলি সম্পূর্ণ করুন:
    1. নির্দিষ্ট হেডার এর সাথে সম্পর্কিত প্রপার্টি ওভাররাইট করা হয়েছে যাতে ডুপ্লিকেট ও একাধিক ভ্যালু ব্যবহার করা যায়, যেমন উপরে Sample output #1-এ দেখানো হয়েছে (হেডার সহ আগে থেকে থাকা কনফিগারেশন)
    2. উপরে দেওয়া নমুনা আউটপুট #২-এর মতো নির্দিষ্ট হেডার সম্পর্কিত প্রপার্টির জন্য কোনও হিট নেই (আগে থেকে থাকা কনফিগারেশন সহ হেডার নয়)

    অন্যথায়, এই বিভাগে বাকি ধাপগুলি এড়িয়ে যান।

  3. নিচে উল্লেখ করা ফাইলটি এডিট করুন। এটি না থাকলে, আপনি তৈরি করতে পারবেন।
    /opt/apigee/customer/application/message-processor.properties

    যেমন, vi ব্যবহার করে ফাইল খুলতে, নিম্নলিখিত কমান্ড লিখুন:

    vi /opt/apigee/customer/application/message-processor.properties
    
  4. প্রপার্টি ফাইলে নিম্নলিখিত ফর্ম্যাটে একটি লাইন যোগ করুন:

    আগে থেকে থাকা কনফিগারেশন

    পরিস্থিতি #১: আগে থেকে থাকা কনফিগারেশন সহ হেডার:

    conf_http_HTTPHeader.Expires=

    আগে থেকে কোনও কনফিগারেশন নেই

    পরিস্থিতি #২: আগে থেকে থাকা কনফিগারেশন সহ হেডার নয়:

    conf/http.properties+HTTPHeader.myheader=
  5. আপনার করা পরিবর্তন সেভ করুন।
  6. apigee ব্যবহারকারীর মালিকানাধীন প্রপার্টি ফাইল আছে কিনা তা নিশ্চিত করুন। তা না হলে, নিম্নলিখিত কমান্ড প্রয়োগ করুন:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  7. মেসেজ প্রসেসর রিস্টার্ট করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    

    ট্রাফিকের উপর প্রভাব না ফেলে রিস্টার্ট করতে, ট্রাফিকের উপর প্রভাব না ফেলে মেসেজ প্রসেসর রোলিং রিস্টার্ট করা দেখুন।

  8. আপনার কাছে একাধিক মেসেজ প্রসেসর থাকলে, সব মেসেজ প্রসেসরের ক্ষেত্রে উপরের ধাপগুলি রিপিট করুন।

যাচাই করে দেখা যে হেডার এমনভাবে কনফিগার করা হয়েছে যাতে ডুপ্লিকেট ও একাধিক ভ্যালু ব্যবহার করা না যায়

এই বিভাগে কীভাবে যাচাই করতে হয় যে নির্দিষ্ট হেডার HTTPHeader.HEADER_NAME-এর প্রপার্টি মেসেজ প্রসেসরে ডুপ্লিকেট এন্ট্রি আটকানোর জন্য সফলভাবে আপডেট করা হয়েছে তা ব্যাখ্যা করা হয়েছে।

আমরা Expires (এবং myheader)-কে হেডার হিসেবে ব্যবহার করব এবং চেক করে দেখব যে সংশ্লিষ্ট প্রপার্টি HTTPHeader.Expires (এবং HTTPHeader.myheader) আপডেট করা হয়েছে কিনা।

  1. মেসেজ প্রসেসর মেশিনে, প্রপার্টিটি HTTPHeader.HEADER_NAME /opt/apigee/edge-message- processor/conf ডিরেক্টরিতে সার্চ করুন এবং নিচে দেখানো নতুন ভ্যালু দিয়ে সেট করা হয়েছে কিনা তা চেক করুন:

    grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
    

    যেমন, আপনি যদি চেক করতে চান যে HTTPHeader.Expires প্রপার্টিতে নতুন ভ্যালু সেট করা আছে তাহলে আপনি নিম্নলিখিত কমান্ড রান করতে পারেন:

    আগে থেকে থাকা কনফিগারেশন

    grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
    

    আগে থেকে কোনও কনফিগারেশন নেই

    grep -ri "HTTPHeader.myheader" /opt/apigee/edge-message-processor/conf
    
  2. Message Processor-এ HTTPHeader.HEADER_NAME I-এর জন্য নতুন HTTP হেডার ভ্যালু সেট করা গেলে, উপরে উল্লিখিত কমান্ডটি http.properties ফাইলে নতুন ভ্যালু দেখায়।
  3. আপনি allowDuplicates বন্ধ করে দেওয়ার পরে উপরের কমান্ড থেকে পাওয়া নমুনা ফলাফল নিচে দেওয়া হল:

    আগে থেকে থাকা কনফিগারেশন

    পরিস্থিতি #১: Expires Header (আগে থেকে থাকা কনফিগারেশন সহ হেডার)

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=

    আগে থেকে কোনও কনফিগারেশন নেই

    পরিস্থিতি #২: myheader হেডার (আগে থেকে থাকা কনফিগারেশন সহ হেডার নয়)

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.myheader=
  4. উপরের আউটপুটের উদাহরণে, লক্ষ্য করুন যে প্রপার্টি HTTPHeader.Expires ( এবং HTTPHeader.myheader ) নতুন ভ্যালু {blank} in http.properties-এর সাথে সেট করা হয়েছে। এটি থেকে বোঝা যায় যে নির্দিষ্ট HTTP হেডার Expires (এবং myheader)-এর জন্য ডুপ্লিকেট ও একাধিক ভ্যালু অনুমোদনের আচরণ মেসেজ প্রসেসরে সফলভাবে বন্ধ করা হয়েছে।
  5. আপনি যদি এখনও প্রপার্টির HTTPHeader.Expires (or HTTPHeader.myheader) পুরনো ভ্যালু দেখতে পান, তাহলে আপনি হেডারের জন্য allowDuplicates এবং একাধিক ভ্যালু কনফিগার করা সম্পর্কিত সমস্ত ধাপ সঠিকভাবে অনুসরণ করেছেন কিনা তা যাচাই করুন। আপনি কোনও ধাপ মিস করে থাকলে, সঠিকভাবে আবার সব ধাপ রিপিট করুন।

    আপনার প্রক্সি প্রত্যাশিতভাবে কাজ করছে কিনা তা নিশ্চিত করুন, বিশেষ করে প্রক্সিতে হেডার পাওয়ার ও সেট করার জন্য কোনও কার্যকরী লজিক থাকলে।

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