অ্যান্টিপ্যাটার্ন: একই হোস্টের ছদ্মনাম ও পোর্ট নম্বর সহ একাধিক ভার্চুয়াল হোস্ট নির্ধারণ করা

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

Apigee Edge-এ, রাউটার সব ইনকামিং API ট্রাফিক ম্যানেজ করে। এর অর্থ হল, Edge API প্রক্সি সার্ভারে আসা সমস্ত HTTP এবং HTTPS অনুরোধ প্রথমে Edge রাউটার দ্বারা ম্যানেজ করা হয়। তাই, API প্রক্সি অনুরোধ অবশ্যই রাউটারে IP অ্যাড্রেস ও খোলা পোর্টে ডাইরেক্ট করতে হবে।

ভার্চুয়াল হোস্ট আপনাকে একটি সার্ভার বা সার্ভারের গ্রুপে একাধিক ডোমেন নেম হোস্ট করতে দেয়। Edge-এর ক্ষেত্রে, সার্ভারগুলি Edge রাউটারের সাথে সম্পর্কিত। রাউটারে ভার্চুয়াল হোস্ট নির্ধারণ করার মাধ্যমে, আপনি একাধিক ডোমেনের অনুরোধ ম্যানেজ করতে পারবেন।

Edge-এ ভার্চুয়াল হোস্ট একটি প্রোটোকল (HTTP বা HTTPS) নির্ধারণ করে, এর সাথে একটি রাউটার পোর্ট ও হোস্ট অ্যালিয়াসও থাকে। হোস্ট অ্যালিয়াস হল সাধারণত একটি DNS ডোমেন নাম যা রাউটারের IP অ্যাড্রেসে ম্যাপ করে।

যেমন, নিম্নলিখিত ছবিতে দুটি ভার্চুয়াল হোস্ট সংজ্ঞা সহ একটি রাউটার দেখানো হয়েছে:

এই উদাহরণে, দুটি ভার্চুয়াল হোস্টের সংজ্ঞা রয়েছে। একটি domainName1 ডোমেনে HTTPS অনুরোধ হ্যান্ডেল করে, অন্যটি domainName2-এ HTTP অনুরোধ হ্যান্ডেল করে।

API প্রক্সিতে করা অনুরোধের ক্ষেত্রে, কোন ভার্চুয়াল হোস্ট অনুরোধটি হ্যান্ডেল করবে তা নির্ধারণ করতে, রাউটার ইনকামিং অনুরোধের হোস্ট হেডার ও পোর্ট নম্বরকে সব ভার্চুয়াল হোস্টের দ্বারা নির্ধারিত হোস্ট অ্যালিয়াসের তালিকার সাথে তুলনা করে।

ভার্চুয়াল হোস্টের জন্য কনফিগারেশনের নমুনা নিচে দেখানো হল:

vhost কনফিগারেশনের নমুনা

অ্যান্টিপ্যাটার্ন

কোনও সংস্থা বা একাধিক সংস্থার একই/আলাদা এনভায়রনমেন্টে একই হোস্টের ছদ্মনাম ও পোর্ট নম্বর সহ একাধিক ভার্চুয়াল হোস্টকে সংজ্ঞায়িত করলে, API অনুরোধ রাউটিং করার সময় বিভ্রান্তি সৃষ্টি হতে পারে এবং অপ্রত্যাশিত সমস্যা/আচরণ দেখা যেতে পারে।

একই হোস্ট অ্যালিয়াস সহ একাধিক ভার্চুয়াল হোস্ট থাকলে কী কী সমস্যা হতে পারে তা একটি উদাহরণের সাহায্যে ব্যাখ্যা করা যাক।

মনে করুন, একই হোস্ট এলিয়াস সহ sandbox and secure দুটি ভার্চুয়াল হোস্ট সংজ্ঞায়িত করা আছে, যেমন, api.company.abc.com কোনও পরিবেশে:

একই উপনাম সহ vhosts

উপরের সেট-আপের সাথে, নিম্নলিখিত বিভাগে বর্ণিত দুটি পরিস্থিতি হতে পারে।

পরিস্থিতি ১ : কোনও API প্রক্সি শুধুমাত্র একটি ভার্চুয়াল হোস্ট স্যান্ডবক্সের অনুরোধ গ্রহণ করার জন্য কনফিগার করা হয়েছে

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

এই পরিস্থিতিতে, ক্লায়েন্ট অ্যাপ্লিকেশন যখন হোস্ট অ্যালিয়াস api.company.abc.com ব্যবহার করে নির্দিষ্ট API প্রক্সি কল করে, তখন তারা মাঝে মাঝে এই মেসেজ সহ 404 সমস্যা দেখতে পাবে:

Unable to identify proxy for host: secure 

এর কারণ হল, রাউটার sandboxএবং secure দুটি ভার্চুয়াল হোস্টে অনুরোধ পাঠায়। অনুরোধগুলি sandbox ভার্চুয়াল হোস্টে রাউট করা হলে, ক্লায়েন্ট অ্যাপ্লিকেশন সঠিক উত্তর পাবে। তবে, অনুরোধগুলি secure ভার্চুয়াল হোস্টে রাউট করা হলে, ক্লায়েন্ট অ্যাপ্লিকেশন 404 সমস্যা দেখাবে কারণ API প্রক্সি secure ভার্চুয়াল হোস্টে অনুরোধ গ্রহণ করার জন্য কনফিগার করা নেই।

পরিস্থিতি ২ : ভার্চুয়াল হোস্ট স্যান্ডবক্স ও সুরক্ষিত, দু'টি জায়গাতেই অনুরোধ গ্রহণ করার জন্য API প্রক্সি কনফিগার করা হয়েছে

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

এই পরিস্থিতিতে, ক্লায়েন্ট অ্যাপ্লিকেশন যখন হোস্ট অ্যালিয়াস api.company.abc.com ব্যবহার করে নির্দিষ্ট API প্রক্সি কল করে, তখন প্রক্সি লজিকের উপর ভিত্তি করে একটি সঠিক উত্তর পাবে।

তবে, এর ফলে Analytics-এ ভুল ডেটা সেভ হয়ে যায়, কারণ API অনুরোধগুলি দুটি ভার্চুয়াল হোস্টে রুট করা হয়, অথচ আসল অনুরোধগুলি শুধুমাত্র একটি ভার্চুয়াল হোস্টে পাঠানোর কথা ছিল।

এছাড়াও, এটি লগিং তথ্য এবং ভার্চুয়াল হোস্টের উপর ভিত্তি করে তৈরি হওয়া অন্য যেকোনও ডেটাকে প্রভাবিত করতে পারে।

প্রভাব

  1. API অনুরোধ ভার্চুয়াল হোস্টে রাউট করা হতে পারে, যেখানে API প্রক্সি অনুরোধ গ্রহণ করার জন্য কনফিগার করা নাও থাকতে পারে। এর ফলে ৪০৪ সমস্যা হতে পারে।
  2. API অনুরোধগুলি শুধুমাত্র একটি নির্দিষ্ট ভার্চুয়াল হোস্টের জন্য করা হলেও, একই হোস্ট অ্যালিয়াস থাকা সমস্ত ভার্চুয়াল হোস্টে রাউট করা হয় বলে Analytics ডেটা ভুল হয়।

পেশাদার পদ্ধতি

  • একই এনভায়রনমেন্টে একই হোস্ট অ্যালিয়াস ও পোর্ট নম্বর সহ একাধিক ভার্চুয়াল হোস্ট সংজ্ঞায়িত করবেন না, অথবা কোনও সংস্থার বিভিন্ন এনভায়রনমেন্টে করবেন না।
  • একাধিক ভার্চুয়াল হোস্টকে সংজ্ঞায়িত করার প্রয়োজন হলে, প্রতিটি ভার্চুয়াল হোস্টের মধ্যে আলাদা আলাদা হোস্ট অ্যালিয়াস ব্যবহার করুন, যেমনটি নিচে দেখানো হয়েছে:

    দুটি ভার্চুয়াল হোস্ট

আরও পড়ুন