API প্রক্সি একসাথে চেইন করা

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

আপনি নির্দিষ্ট করতে পারেন যে একটি প্রক্সি অন্যটির টার্গেট এন্ডপয়েন্ট, এর ফলে প্রক্সি চেনে দুটি প্রক্সি কানেক্ট হয়ে যায়। এইভাবে প্রক্সি চেইন করলে, আপনি নেটওয়ার্ক হপ এড়াতে পারবেন এবং এর ফলে সামগ্রিক পারফর্ম্যান্স উন্নত হবে।

প্রক্সি চেইনিংয়ের মাধ্যমে আপনি নির্দিষ্ট করেন যে একটি প্রক্সি হল অন্যটির লোকাল টার্গেট এন্ডপয়েন্ট। দ্বিতীয় প্রক্সিতে কল করার জন্য HTTPTargetConnection এলিমেন্ট ব্যবহার না করে LocalTargetConnection এলিমেন্ট ব্যবহার করুন।

<LocalTargetConnection>
    <APIProxy>myproxy2</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

আপনার কাছে এমন একটি প্রক্সি থাকলে, যা কিছু আলাদা লো-লেভেল ফাংশনালিটি অফার করে, যা অন্যান্য প্রক্সি ব্যবহার করবে, সেক্ষেত্রে আপনি প্রক্সি চেইনিংকে উপযোগী হিসেবে পেতে পারেন। যেমন, একটি প্রক্সি যা ব্যাকএন্ড ডেটা স্টোরের সাথে ক্রিয়েট/রিড/আপডেট/ডিলিট অপারেশন প্রকাশ করে, সেটি একাধিক অন্যান্য প্রক্সির টার্গেট প্রক্সি হতে পারে যা ক্লায়েন্টদের কাছে ডেটা প্রকাশ করে।

ভিডিও: API প্রক্সি চেইনিং সম্পর্কে আরও জানতে একটি ছোট ভিডিও দেখুন।

প্রক্সি চেইনিং কীভাবে কাজ করে

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

HTTPTargetConnection ও LocalTargetConnection (প্রক্সি চেইনিং) ব্যবহার করে প্রক্সি কানেক্ট করার মধ্যে পার্থক্য নিম্নলিখিত উদাহরণ থেকে বোঝা যায়:

আপনি প্রক্সি কানেক্ট করেন, এটি উল্লেখ করে যে একটি হল অন্যটির স্থানীয় টার্গেট এন্ডপয়েন্ট। আপনি দুটি উপায়ে প্রক্সি সার্ভারের মধ্যে লোকাল কানেকশন তৈরি করতে পারবেন:

  • টার্গেট প্রক্সি ও ProxyEndpoint নাম উল্লেখ করে
  • টার্গেট প্রক্সি এন্ডপয়েন্টের পাথ নির্দিষ্ট করে

আপনি TargetEndpoint কনফিগারেশনের মধ্যে টার্গেট প্রক্সি কানেক্ট করেন, নিচে বর্ণনা করা অনুযায়ী LocalTargetConnection এলিমেন্ট ব্যবহার করে।

প্রক্সির নাম দিয়ে প্রক্সি কানেক্ট করা

আপনি নাম দিয়ে টার্গেট প্রক্সি নির্দিষ্ট করতে পারবেন। আপনি হয়ত দেখবেন যে এটি সবচেয়ে বেশি উপযোগী হয় যখন আপনি প্রথম থেকে কানেকশন তৈরি করেন এবং একসাথে প্রক্সি ডেভেলপ করেন। আপনি যদি নাম না জানেন (অথবা নাম পরিবর্তন হতে পারে), তাহলে নিচে বর্ণিত টার্গেট প্রক্সির এন্ডপয়েন্ট পাথের সাথে কানেক্ট করার কথা বিবেচনা করুন।

নামের মাধ্যমে কোনও টার্গেট প্রক্সির সাথে কানেক্ট করলে, আপনি প্রক্সির নাম ও সেটির ProxyEndpoint উল্লেখ করেন।

নিচের উদাহরণে data-manager নামের একটি টার্গেট প্রক্সি নির্দিষ্ট করা হয়েছে, সাথে data-manager-এর মাধ্যমে এক্সপোজ করা ProxyEndpoint নামও নির্দিষ্ট করা হয়েছে। রেফারেন্স তথ্যের জন্য, API প্রক্সি কনফিগারেশন রেফারেন্স দেখুন।

<TargetEndpoint name="datamanager">
    <PreFlow name="PreFlow">
        <!-- PreFlow policies -->
    </PreFlow>
    <PostFlow name="PostFlow">
        <!-- PostFlow policies -->
    </PostFlow>
    <LocalTargetConnection>
        <APIProxy>data-manager</APIProxy>
        <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>
</TargetEndpoint>

পাথ অনুযায়ী প্রক্সি কানেক্ট করা

আপনি এন্ডপয়েন্ট পাথের মাধ্যমে টার্গেট প্রক্সি নির্দিষ্ট করতে পারবেন। আপনি হয়ত এই পদ্ধতিতে করতে চাইবেন যখন প্রক্সির নাম জানেন না অথবা নাম পরিবর্তন হতে পারে।

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

নিচের উদাহরণে /v1/streetcarts/foodcarts/data-manager-এ একটি টার্গেট প্রক্সি নির্দিষ্ট করা হয়েছে, যেখানে হোস্টকে বর্তমান প্রক্সির মতোই একই বলে ধরে নেওয়া হয়েছে। রেফারেন্স তথ্যের জন্য, API প্রক্সি কনফিগারেশন রেফারেন্স দেখুন।

<TargetEndpoint name="datamanager">
    <PreFlow name="PreFlow">
        <!-- PreFlow policies -->
    </PreFlow>
    <PostFlow name="PostFlow">
        <!-- PostFlow policies -->
    </PostFlow>
    <LocalTargetConnection>
        <Path>/v1/streetcarts/foodcarts/data-manager</Path> 
    </LocalTargetConnection>
</TargetEndpoint>

ম্যানেজমেন্ট কনসোলের সাথে প্রক্সি কানেক্ট করা

আপনি Edge ম্যানেজমেন্ট কনসোল ব্যবহার করে প্রক্সি চেইনিং কানেকশন তৈরি করতে পারবেন।

  1. যে প্রক্সি টার্গেট প্রক্সি ব্যবহার করবে সেটি খুলুন।
  2. নেভিগেটর-এ, টার্গেট এন্ডপয়েন্ট-এর পাশে থাকা যোগ চিহ্নে ক্লিক করুন।
  3. নতুন টার্গেট এন্ডপয়েন্ট ডায়ালগে, টার্গেট এন্ডপয়েন্টের নাম লিখুন।
  4. টার্গেট এন্ডপয়েন্টের নাম বক্সের নিচে, নিম্নলিখিত বিকল্পগুলির মধ্যে একটি বেছে নিন:
    • সংস্থা ও পরিবেশে আগে থেকেই থাকা প্রক্সি সার্ভারের তালিকা থেকে বেছে নিতে প্রক্সি চেইনিং।
      1. প্রক্সি নাম ড্রপডাউন থেকে, টার্গেট প্রক্সি বেছে নিন।
      2. প্রক্সি এন্ডপয়েন্ট বক্সে, আপনি যে টার্গেট প্রক্সি এন্ডপয়েন্ট পাথের সাথে কানেক্ট করতে চান সেটি লিখুন।
    • টার্গেট প্রক্সি বেস পাথ লিখতে পাথ চেইনিং, যেমন /mypath/myproxy/myendpoint।
  5. যোগ করুন বিকল্পে ক্লিক করুন।

চেন করা প্রক্সি, API প্রোডাক্ট ও নিরাপত্তা

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

আপনার দ্বিতীয় প্রক্সি যদি ক্লায়েন্টের সরাসরি অনুরোধের বিরুদ্ধে সুরক্ষিত হতে হয়, তাহলে আপনার দ্বিতীয় প্রক্সিকে ক্লায়েন্টের IP অ্যাড্রেস পরীক্ষা করার জন্য লজিক যোগ করার কথা বিবেচনা করুন। চেনিংয়ের মাধ্যমে কল করা হলে, IP অ্যাড্রেস লোকাল হবে। প্রসেসিং চালিয়ে যাওয়ার অনুমতি দেওয়ার আগে আপনার কোড যাচাই করতে পারে যে এটি লোকাল কিনা। এটি করার একটি উপায় জানতে অ্যাক্সেস কন্ট্রোল নীতি দেখুন।