আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
Apigee Edge-এ, একটি রাউটার সমস্ত ইনকামিং API ট্র্যাফিক পরিচালনা করে। এর মানে হলো, একটি Edge API প্রক্সিতে পাঠানো সমস্ত HTTP এবং HTTPS অনুরোধ প্রথমে একটি Edge রাউটার দ্বারা পরিচালিত হয়। সুতরাং, API প্রক্সি অনুরোধ অবশ্যই একটি রাউটারের IP অ্যাড্রেস এবং খোলা পোর্টে পাঠাতে হবে।
ভার্চুয়াল হোস্ট আপনাকে একটিমাত্র সার্ভার বা একাধিক সার্ভারে একাধিক ডোমেইন নেম হোস্ট করার সুযোগ দেয়। Edge-এর ক্ষেত্রে, এই সার্ভারগুলো Edge রাউটারের সাথে সম্পর্কিত। একটি রাউটারে ভার্চুয়াল হোস্ট নির্ধারণ করার মাধ্যমে, আপনি একাধিক ডোমেইনের অনুরোধ পরিচালনা করতে পারেন।
Edge-এর একটি ভার্চুয়াল হোস্ট একটি প্রোটোকল (HTTP বা HTTPS), একটি রাউটার পোর্ট এবং একটি হোস্ট অ্যালিয়াস নির্ধারণ করে। হোস্ট অ্যালিয়াসটি সাধারণত একটি DNS ডোমেইন নেম হয়, যা একটি রাউটারের IP অ্যাড্রেসের সাথে ম্যাপ করা থাকে।
উদাহরণস্বরূপ, নিচের ছবিতে দুটি ভার্চুয়াল হোস্ট ডেফিনিশন সহ একটি রাউটার দেখানো হয়েছে:

এই উদাহরণে, দুটি ভার্চুয়াল হোস্ট ডেফিনিশন রয়েছে। একটি domainName1 ডোমেইনে HTTPS রিকোয়েস্টগুলো পরিচালনা করে, অন্যটি domainName2 ডোমেইনে HTTP রিকোয়েস্টগুলো পরিচালনা করে।
এপিআই প্রক্সিতে কোনো অনুরোধ পাঠানো হলে, কোন ভার্চুয়াল হোস্ট অনুরোধটি পরিচালনা করবে তা নির্ধারণ করার জন্য রাউটার আগত অনুরোধের হোস্ট হেডার এবং পোর্ট নম্বরকে সমস্ত ভার্চুয়াল হোস্ট দ্বারা সংজ্ঞায়িত হোস্ট অ্যালিয়াসের তালিকার সাথে তুলনা করে।
ভার্চুয়াল হোস্টের নমুনা কনফিগারেশন নিচে দেখানো হলো:

অ্যান্টিপ্যাটার্ন
একটি প্রতিষ্ঠানের একই/ভিন্ন পরিবেশে অথবা বিভিন্ন প্রতিষ্ঠানের মধ্যে একই হোস্ট অ্যালিয়াস এবং পোর্ট নম্বর দিয়ে একাধিক ভার্চুয়াল হোস্ট নির্ধারণ করলে এপিআই (API) অনুরোধ রাউটিং করার সময় বিভ্রান্তি সৃষ্টি হবে এবং এর ফলে অপ্রত্যাশিত ত্রুটি বা আচরণ দেখা দিতে পারে।
একই হোস্ট অ্যালিয়াস ব্যবহার করে একাধিক ভার্চুয়াল হোস্ট থাকার প্রভাবগুলো একটি উদাহরণের মাধ্যমে ব্যাখ্যা করা যাক।
ধরে নিন দুটি ভার্চুয়াল হোস্ট আছে sandbox and secure একটি পরিবেশে একই হোস্ট অ্যালিয়াস, যেমন api.company.abc.com , দিয়ে সংজ্ঞায়িত:

উপরোক্ত বিন্যাসের ফলে দুটি পরিস্থিতি তৈরি হতে পারে, যা পরবর্তী অনুচ্ছেদগুলোতে বর্ণনা করা হলো।
দৃশ্যকল্প ১: একটি এপিআই প্রক্সি এমনভাবে কনফিগার করা হয়েছে যাতে এটি ভার্চুয়াল হোস্ট স্যান্ডবক্সগুলোর মধ্যে শুধুমাত্র একটিতে আসা অনুরোধ গ্রহণ করতে পারে।
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint> এই পরিস্থিতিতে, যখন ক্লায়েন্ট অ্যাপ্লিকেশনগুলি api.company.abc.com হোস্ট অ্যালিয়াস ব্যবহার করে নির্দিষ্ট এপিআই প্রক্সিতে কল করে, তখন তারা মাঝে মাঝে এই বার্তা সহ 404 ত্রুটি পাবে:
Unable to identify proxy for host: secure
এর কারণ হলো, রাউটারটি sandbox এবং secure উভয় ভার্চুয়াল হোস্টেই অনুরোধ পাঠায়। যখন অনুরোধগুলো sandbox ভার্চুয়াল হোস্টে পাঠানো হয়, তখন ক্লায়েন্ট অ্যাপ্লিকেশনগুলো একটি সফল প্রতিক্রিয়া পায়। কিন্তু, যখন অনুরোধগুলো secure ভার্চুয়াল হোস্টে পাঠানো হয়, তখন ক্লায়েন্ট অ্যাপ্লিকেশনগুলো 404 ত্রুটি পায়, কারণ এপিআই প্রক্সিটি secure ভার্চুয়াল হোস্টে অনুরোধ গ্রহণ করার জন্য কনফিগার করা থাকে না।
দৃশ্যকল্প ২: একটি এপিআই প্রক্সি স্যান্ডবক্স এবং সুরক্ষিত উভয় ভার্চুয়াল হোস্ট থেকে অনুরোধ গ্রহণ করার জন্য কনফিগার করা হয়েছে।
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint> এই পরিস্থিতিতে, যখন ক্লায়েন্ট অ্যাপ্লিকেশনগুলি api.company.abc.com হোস্ট অ্যালিয়াস ব্যবহার করে নির্দিষ্ট এপিআই প্রক্সিতে কল করে, তখন তারা প্রক্সি লজিকের উপর ভিত্তি করে একটি বৈধ প্রতিক্রিয়া পাবে।
তবে, এর ফলে অ্যানালিটিক্সে ভুল ডেটা সংরক্ষিত হয়, কারণ এপিআই অনুরোধগুলো উভয় ভার্চুয়াল হোস্টেই পাঠানো হয়, অথচ প্রকৃত অনুরোধগুলো কেবল একটি ভার্চুয়াল হোস্টে পাঠানোর লক্ষ্য ছিল।
এর ফলে লগিং তথ্য এবং ভার্চুয়াল হোস্ট-ভিত্তিক অন্য যেকোনো ডেটাও প্রভাবিত হতে পারে।
প্রভাব
- 404 ত্রুটি দেখা দিতে পারে, কারণ এপিআই অনুরোধগুলি এমন একটি ভার্চুয়াল হোস্টে পাঠানো হতে পারে যেখানে এপিআই প্রক্সি অনুরোধগুলি গ্রহণ করার জন্য কনফিগার করা নাও থাকতে পারে।
- অ্যানালিটিক্স ডেটা ভুল, কারণ এপিআই অনুরোধগুলি শুধুমাত্র একটি নির্দিষ্ট ভার্চুয়াল হোস্টের জন্য করা হলেও সেগুলি একই হোস্ট অ্যালিয়াসযুক্ত সমস্ত ভার্চুয়াল হোস্টে রাউট করা হচ্ছে।
সর্বোত্তম অনুশীলন
- একই এনভায়রনমেন্টে, অথবা একটি প্রতিষ্ঠানের বিভিন্ন এনভায়রনমেন্টে, একই হোস্ট অ্যালিয়াস ও পোর্ট নম্বর ব্যবহার করে একাধিক ভার্চুয়াল হোস্ট সংজ্ঞায়িত করবেন না।
যদি একাধিক ভার্চুয়াল হোস্ট নির্ধারণ করার প্রয়োজন হয়, তাহলে নিচে দেখানো অনুযায়ী প্রতিটি ভার্চুয়াল হোস্টে ভিন্ন ভিন্ন হোস্ট অ্যালিয়াস ব্যবহার করুন:
