KoderKoder.ai
প্রাইসিংএন্টারপ্রাইজএডুকেশনবিনিয়োগকারীদের জন্য
লগ ইনশুরু করুন

প্রোডাক্ট

প্রাইসিংএন্টারপ্রাইজবিনিয়োগকারীদের জন্য

রিসোর্স

আমাদের সাথে যোগাযোগ করুনসহায়তাএডুকেশনব্লগ

লিগ্যাল

প্রাইভেসি পলিসিটার্মস অফ ইউজসিকিউরিটিঅ্যাকসেপ্টেবল ইউজ পলিসিঅ্যাবিউজ রিপোর্ট করুন

সোশ্যাল

LinkedInTwitter
Koder.ai
ভাষা

© 2026 Koder.ai. সর্বস্বত্ব সংরক্ষিত।

হোম›ব্লগ›Nginx বনাম HAProxy: সঠিক রিভার্স প্রক্সি নির্বাচন
৩০ আগ, ২০২৫·4 মিনিট

Nginx বনাম HAProxy: সঠিক রিভার্স প্রক্সি নির্বাচন

Nginx এবং HAProxy এর তুলনা: পারফরম্যান্স, লোড ব্যালান্সিং, TLS, অবজার্ভেবিলিটি, সিকিউরিটি এবং সাধারণ সেটআপ—কোনটি আপনার ব্যবহারের জন্য উপযুক্ত সে সম্পর্কে নির্দেশনা।

Nginx বনাম HAProxy: সঠিক রিভার্স প্রক্সি নির্বাচন

একটি রিভার্স প্রক্সি আপনার অ্যাপগুলোর জন্য কী করে

একটি রিভার্স প্রক্সি হচ্ছে একটি সার্ভার যা আপনার অ্যাপ্লিকেশনগুলোর সামনে বসে এবং প্রথমে ক্লায়েন্ট অনুরোধগুলো গ্রহণ করে। এটি প্রতিটি অনুরোধকে সঠিক ব্যাকএন্ড সার্ভিসে ফরওয়ার্ড করে (আপনার অ্যাপ সার্ভারগুলো) এবং প্রতিক্রিয়া ক্লায়েন্টকে ফেরত দেয়। ব্যবহারকারীরা প্রক্সির সাথে কথা বলে; প্রক্সি আপনার অ্যাপগুলোর সঙ্গে কথা বলে়।

একটি ফরোয়ার্ড প্রক্সি উল্টোভাবে কাজ করে: এটি ক্লায়েন্টদের সামনে বসে (উদাহরণস্বরূপ, কোম্পানির নেটওয়ার্কে) এবং তাদের আউটবাউন্ড অনুরোধগুলো ইন্টারনেটে ফরওয়ার্ড করে। এটি প্রধানত ক্লায়েন্ট ট্রাফিক নিয়ন্ত্রণ, ফিল্টারিং বা লুকাতে ব্যবহৃত হয়।

একটি লোড ব্যালান্সার সাধারণত একটি রিভার্স প্রক্সি হিসেবে ইমপ্লিমেন্ট করা হয়, কিন্তু একটি নির্দিষ্ট ফোকাস থাকে: ট্রাফিক একাধিক ব্যাকএন্ড ইনস্ট্যান্সের মধ্যে বিতরণ করা। অনেক প্রোডাক্ট (Nginx এবং HAProxy সহ) উভয়ই রিভার্স প্রক্সি এবং লোড ব্যালান্সিং করে, তাই টার্মগুলো কখনও একে অপরের পরিবর্তে ব্যবহৃত হয়।

রিভার্স প্রক্সি কেন ব্যবহার করা হয় — সাধারণ লক্ষ্যসমূহ

অধিকাংশ ডেপলয়মেন্ট নিচের এক বা একাধিক কারণে শুরু হয়:

  • TLS/SSL টার্মিনেশন: HTTPS এক জায়গায় হ্যান্ডেল করা, সার্টিফিকেট কেন্দ্রিয়ভাবে ম্যানেজ করা, এবং প্রয়োজনে অভ্যন্তরীণ সার্ভিসে সাধারণ HTTP ফরওয়ার্ড করা।
  • রাউটিং: hostname, path, header বা অন্য নিয়মের উপর ভিত্তি করে ট্রাফিক আলাদা সার্ভিসে পাঠানো (উদাহরণ: /api→API সার্ভিস, /→ওয়েব অ্যাপ)।
  • বাফারিং ও কানেকশন হ্যান্ডলিং: ধীর ক্লায়েন্ট বা ধীর আপস্ট্রিমকে মসৃণ করা, অ্যাপ সার্ভারগুলোর প্রতি-সংযোগ ওভারহেড কমানো, এবং গ্রহণযোগ্য নির্ভরযোগ্যতা বাড়ানো।
  • সুরক্ষা নিয়ন্ত্রণ: রিকোয়েস্ট লিমিট, বেসিক ফিল্টারিং, এবং নিরাপদ ডিফল্ট প্রয়োগ করা যাতে অনুরোধ অ্যাপ পৌঁছানোর আগে হ্যান্ডেল হয়।

এটি আপনার অ্যাপগুলোর সামনে কোথায় থাকে

রিভার্স প্রক্সি সাধারণত ওয়েবসাইট, API, এবং মাইক্রোসার্ভিস-এর সামনে থাকে — বা এজে (পাবলিক ইন্টারনেট) বা অভ্যন্তরীণভাবে সার্ভিসগুলোর মধ্যে। আধুনিক স্ট্যাকে এগুলো ইনগ্রেস গেটওয়ে, ব্লু/গ্রীন ডেপ্লয়মেন্ট এবং হাই-অ্যাভেলিবিলিটি সেটআপগুলোর বিল্ডিং ব্লক হিসেবেও ব্যবহৃত হয়।

এই গাইড আপনাকে কী সিদ্ধান্ত নিতে সাহায্য করবে

Nginx এবং HAProxy ওভারল্যাপ করে, কিন্তু জোর এবং ব্যবহারভেদের দিকগুলো ভিন্ন। নিম্নলিখিত অংশগুলোতে আমরা তুলনা করব: অনেক সংযোগের অধীনে পারফর্ম্যান্স, লোড ব্যালান্সিং ও হেলথ চেক, প্রোটোকল সাপোর্ট (HTTP/2, TCP), TLS ফিচার, অবসার্ভেবিলিটি, এবং দিন-প্রতি-দিন কনফিগারেশন ও অপারেশন।

Nginx সারসংক্ষেপ: শক্তি ও সাধারণ ব্যবহার ক্ষেত্র

Nginx ব্যাপকভাবে ব্যবহৃত হয় উভয় ওয়েব সার্ভার এবং রিভার্স প্রক্সি হিসেবে। অনেক টিম প্রথমে এটিকে পাবলিক সাইট সার্ভ করার জন্য ব্যবহার করে এবং পরে এটা অ্যাপ সার্ভারগুলোর সামনে বসিয়ে TLS, রাউটিং, এবং ট্রাফিক স্পাইক সামলানোর কাজ দেয়।

কেন মানুষ Nginx-কে এজে পছন্দ করে

যদি আপনার ট্রাফিক প্রধানত HTTP(S) এবং আপনি একটি একক “ফ্রন্ট ডোর” চান যে কিছু কিছু কাজ করতে পারে, তাহলে Nginx উজ্জ্বল করে উঠে। এটি বিশেষভাবে ভাল:

  • স্ট্যাটিক অ্যাসেট (ইমেজ, CSS/JS) কার্যকরভাবে সার্ভ করা
  • সরল পাথ- এবং হোস্ট-ভিত্তিক রাউটিং সহ HTTP রিভার্স প্রক্সি
  • ব্যাকএন্ড লোড কমাতে ক্যাশিং
  • হেডার যোগ বা নর্মালাইজ করা (উদাহরণ: X-Forwarded-For, সিকিউরিটি হেডার)

কারণ এটি কনটেন্ট সার্ভ এবং অ্যাপ proxy উভয়ই করতে পারে, Nginx ছোট থেকে মাঝারি সেটআপে কম কম্পোনেন্ট রেখে শুরু করার জন্য সাধারণ পছন্দ।

মডিউল ও ফিচার যা টিমগুলো বিশ্বাস করে

জনপ্রিয় সক্ষমতাগুলো:

  • TLS টার্মিনেশন এবং সার্টিফিকেট ম্যানেজমেন্ট ওয়ার্কফ্লো (অften রিলোড সহ অটোমেশন)
  • কমপ্রেশন (gzip/brotli — বিল্ড অনুযায়ী) ব্যান্ডউইথ কমাতে
  • রেট লিমিটিং এবং বেসিক অনুরোধ নিয়ন্ত্রণ যাতে নোয়েসি ক্লায়েন্টকে ধাক্কা দেয়া যায়
  • রিওরাইটস ও রিডিরেক্টস URL ক্লিনআপ ও লেগ্যাসি মাইগ্রেশনের জন্য
  • ঐচ্ছিক ফিচার যেমন WebSocket প্রক্সিং রিয়েল-টাইম অ্যাপের জন্য

সাধারণ “ফ্রন্ট ডোর” পরিস্থিতি

Nginx প্রায়ই নির্বাচিত হয় যখন আপনি একটি এন্ট্রি পয়েন্ট চান যেটি:

  • একটি মার্কেটিং সাইট + একটি API (স্ট্যাটিক + প্রক্সি)
  • কয়েকটি অ্যাপ ইনস্ট্যান্সের মধ্যে সরল লোড ব্যালান্সিং
  • ধীর ব্যাকএন্ড (CMS বা REST সার্ভিস)-এর সামনে ক্যাশিং
  • বিভিন্ন হোস্টনেমের অধীনে বহু সার্ভিসের জন্য গেটওয়ে হিসেবে কাজ

আপনি যদি HTTP-হ্যান্ডলিং পছন্দ করেন এবং কনটেন্ট সার্ভিং ও রিভার্স প্রক্সিং একসাথে রাখতে চান, Nginx প্রায়ই ডিফল্ট শুরু পয়েন্ট।

HAProxy সারসংক্ষেপ: শক্তি ও সাধারণ ব্যবহার ক্ষেত্র

HAProxy (High Availability Proxy) সাধারণত ব্যবহৃত হয় একটি রিভার্স প্রক্সি ও লোড ব্যালান্সার হিসেবে যা এক বা একাধিক অ্যাপ সার্ভারের সামনে বসে। এটি ইনকামিং ট্রাফিক গ্রহণ করে, রাউটিং এবং ট্রাফিক নিয়ম প্রয়োগ করে, এবং অনুরোধগুলো স্বাস্থ্যবান ব্যাকএন্ডে ফরওয়ার্ড করে—প্রায়ই ভারী কনকারেনসির অধীনে রেসপন্স টাইম স্টেবল রেখে।

HAProxy সাধারণত কিসের জন্য ব্যবহৃত হয়

টিমগুলো সাধারণত HAProxy ডেপ্লয় করে ট্রাফিক ম্যানেজমেন্ট-এর জন্য: অনুরোধগুলো একাধিক সার্ভারের মধ্যে ছড়িয়ে দেওয়া, ফেইলিউরের সময় সার্ভিস উপলব্ধ রাখা, এবং ট্রাফিক স্পাইকগুলো মসৃণ করা। এটি উত্তর–দক্ষিণ (edge) ট্রাফিক এবং অভ্যন্তরীণ (east–west) উভয় ক্ষেত্রে ব্যবহৃত হয়, বিশেষত যখন আপনি পূর্বানুমেয় আচরণ এবং কানেকশন-হ্যান্ডলিং-এর উপর শক্ত নিয়ন্ত্রণ চান।

মূল শক্তি: কানেকশন, লোড ব্যালান্সিং, হেলথ চেক

HAProxy দীর্ঘসময় ধরে অনেক কনকারেন্ট কানেকশন দক্ষতার সঙ্গে হ্যান্ডল করার জন্য পরিচিত। যখন আপনার একসাথে অনেক ক্লায়েন্ট যুক্ত থাকে (ব্যস্ত API, লং-লিভড কানেকশন, চ্যাটি মাইক্রোসার্ভিস), তখন প্রক্সির রেসপন্সিভ থাকা গুরুত্বপূর্ণ হয়।

এর লোড ব্যালান্সিং সক্ষমতাই মানুষের HAProxy বেছে নেওয়ার প্রধান কারণ। সরল রাউন্ড-রবিন ছাড়াও এটি বিভিন্ন অ্যালগরিদম ও রাউটিং স্ট্র্যাটেজি সমর্থন করে, যা সাহায্য করে:

  • “হট” সার্ভারগুলোকে অতিরিক্তভাবে ওভারহেল্ম করা থেকে রক্ষা করা
  • রোলআউটের সময় ধীরে ধীরে ট্রাফিক শিফট করা
  • দরকারে দ্রুত বা কম-লোডযুক্ত ইনস্ট্যান্সকে প্রেফার করা

হেলথ চেকও একটি শক্ত পয়েন্ট: HAProxy অ্যাকটিভভাবে ব্যাকএন্ডগুলো যাচাই করতে পারে এবং অসুস্থ ইনস্ট্যান্সগুলোকে রোটেশন থেকে বাদ দিয়ে দেয়, পরে সেগুলো পুনরায় সুস্থ হলে যোগ করে। বাস্তবে, এটি ডাউনটাইম কমায় এবং “আধা-ভাঙা” ডেপ্লয়মেন্টের কারণে সকল ব্যবহারকারী প্রভাবিত হওয়া রোধ করে।

লেয়ার 4 বনাম লেয়ার 7: প্র্যাকটিক্যাল অর্থ

HAProxy Layer 4 (TCP) এবং Layer 7 (HTTP) উভয়েই অপারেট করতে পারে।

  • Layer 4 (TCP) মোড কাঁচা কানেকশন ফরওয়ার্ডিং-এ ফোকাস করে। এটি এমন প্রটোকলগুলোর জন্য উপযুক্ত যেখানে আপনাকে HTTP ডিটেইল পরখ করতে হবে না — উদাহরণ: ডাটাবেস প্রোক্সি, বা যখন আপনি মিনিমাল ওভারহেড চান।
  • Layer 7 (HTTP) মোড HTTP সেম্যান্টিক্স বুঝতে পারে, ফলে হেডার-ভিত্তিক রাউটিং, পাথ রুল, এবং সূক্ষ্ম-গ্রেইনড ট্রাফিক কন্ট্রোল সম্ভব।

ব্যবহারিক পার্থক্য: L4 সাধারণত সহজতর এবং TCP ফরওয়ার্ডিংয়ে খুব দ্রুত, যখন L7 তখন আপনি আরও সমৃদ্ধ রাউটিং ও অনুরোধ লজিক পান যখন তা প্রয়োজন।

কখন HAProxy বেছে নেওয়া হয়

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

পারফরম্যান্স বেসিক্স: লেটেন্সি, থ্রুপুট, এবং কানেকশন

বাস্তব ট্র্যাফিকে পরীক্ষা করুন
প্রক্সি ডিফল্ট বেছে নেওয়ার আগে আপনার সার্ভিস ডেপ্লয় করে বাস্তব ট্র্যাফিক প্যাটার্ন পরীক্ষা করুন।
এখন ডেপ্লয় করুন

পারফরম্যান্স তুলনা প্রায়ই ভুল হয় কারণ মানুষ একটাই সংখ্যার (যেমন “ম্যাক্স RPS”) দিকে তাকায় এবং ব্যবহারকারীর অনুভূতিটি উপেক্ষা করে।

থ্রুপুট বনাম লেটেন্সি বনাম টেইল লেটেন্সি

  • থ্রুপুট: আপনি কত কাজ বের করতে পারেন (requests/second বা bytes/second)।
  • লেটেন্সি: একটি অনুরোধে সময় কত লাগে।
  • টেইল লেটেন্সি (p95/p99): বাস্তব কষ্ট যেখানে দেখা যায় — গড় ভালো হলেও ধীরতম ১–৫% টাইমআউট, রিট্রাই, খারাপ UX করে।

একটি প্রক্সি থ্রুপুট বাড়াতে পারে কিন্তু টেইল লেটেন্সি খারাপ করে যদি লোডের সময় অনেক কাজ কিউ করে।

কানেকশন প্যাটার্নগুলো গুরুত্বপূর্ণ

আপনার অ্যাপের “আকৃতি” সম্পর্কে ভাবুন:

  • অনেক ছোটজীবী অনুরোধ (টিপিক্যাল ওয়েব ট্রাফিক): কানেকশন গ্রহণ, TLS হ্যান্ডশেক, এবং অনুরোধ পার্সিং-এ দক্ষতা গুরুত্বপূর্ণ।
  • কয়েকটি লং-লিভড কানেকশন (WebSockets, স্ট্রিমিং, gRPC, ডাটাবেস-সদৃশ TCP): প্রতিটি কানেকশনের জন্য স্থির ও পূর্বানুমেয় রিসোর্স ব্যবহার গুরুত্বপূর্ণ।

যদি আপনি এক প্যাটার্ন দিয়ে বেঞ্চমার্ক করেন কিন্তু অন্য প্যাটার্নে ডেপ্লয় করেন, ফলাফল ট্রান্সফার হবে না।

বাফারিং: বন্ধু এবং শত্রু

বাফারিং সাহায্য করতে পারে যখন ক্লায়েন্ট ধীর বা ট্র্যাফিক বিস্ফোরক, কারণ প্রক্সি পুরো রিকোয়েস্ট (বা রেসপন্স) পড়ে এবং আপনার অ্যাপকে স্থিতিশীল গতিতে খাওয়ায়।

বাফারিং ক্ষতিও করতে পারে যখন আপনার অ্যাপ স্ট্রিমিং থেকে উপকার পায় (SSE, বড় ডাউনলোড, রিয়েল-টাইম API)। অতিরিক্ত বাফারিং মেমোরি চাপ বাড়ায় এবং টেইল লেটেন্সি বাড়াতে পারে।

ব্যবহারিক বেঞ্চমার্কিং টিপস

শুধু “ম্যাক্স RPS” মাপুন না:

  • RPS/Throughput, p50/p95/p99 লেটেন্সি, এবং এরর রেট (টাইমআউট, 502/503) মাপুন।
  • স্টেডি লোড এবং স্পাইক (সংক্ষিপ্ত বুর্স প্রায়ই কিউইং আচরণ ফাঁস করে) পরীক্ষা করুন।
  • বাস্তবসম্মত keep-alive/TLS সেটিং ব্যবহার করুন এবং CPU, মেমরি, ও ওপেন কানেকশন হিসাব রেকর্ড করুন।

যদি p95 দ্রুত বাড়ে ততক্ষণে এরর না দেখা দেয়, আপনি স্যাচুরেশনের প্রাথমিক সতর্কতা দেখছেন — এটা “ফ্রি হেডরুম” নয়।

লোড ব্যালান্সিং ও হেলথ চেক তুলনা

Nginx ও HAProxy উভয়ই একাধিক অ্যাপ ইনস্ট্যান্সের সামনে বসে ট্রাফিক ছড়াতে পারে, কিন্তু তারা আউট-অফ-দ্যা-বক্স লোড-ব্যালান্সিং সেটের গভীরে ভিন্ন।

লোড-ব্যালান্সিং অ্যালগরিদম

Round-robin ডিফল্ট “চমৎকার” পছন্দ যখন ব্যাকএন্ডগুলো অনুরূপ (একই CPU/মেমরি, একই অনুরোধ খরচ)। এটি সহজ, পূর্বানুমেয়, এবং স্টেটলেস অ্যাপের জন্য ভাল।

Least connections কাজ করে যখন অনুরোধের সময়কাল ভিন্ন (ফাইল ডাউনলোড, দীর্ঘ API কল, চ্যাট/ওয়েবসকেট)। এটি ধীর সার্ভারগুলোকে অতিরিক্ত লোড থেকে রক্ষা করে কারণ এটি কম অ্যাকটিভ অনুরোধ থাকা ব্যাকএন্ডকে প্রেফার করে।

Weighted balancing (ওয়েটেড রাউন্ড-রবিন বা ওয়েটেড least-connections) বাস্তবধর্মী বিকল্প যখন সার্ভারগুলো একই নয়—পুরনো ও নতুন নোড মিশে থাকা, বিভিন্ন ইনস্ট্যান্স সাইজ, বা ধীরে ধীরে ট্রাফিক শিফট ইত্যাদি।

সাধারণভাবে, HAProxy বেশি অ্যালগরিদম ও সূক্ষ্ম নিয়ন্ত্রণ অফার করে এবং লেয়ার 4/7-এ বিস্তৃত কনফিগারেশন দেয়, যখন Nginx সাধারণ ক্ষেত্রে পরিষ্কারভাবে কভার করে (আরও এক্সটেনশন সম্ভব এডিশন/মডিউল অনুযায়ী)।

সেশন পার্সিস্টেন্স (স্টিকনেস)

স্টিকনেস ব্যবহারকারীর অনুরোধকে একই ব্যাকএন্ডে রাখে:

  • কুকি-ভিত্তিক পার্সিস্টেন্স ওয়েব অ্যাপের জন্য সাধারণত সেরা: এটি স্পষ্ট, NAT-এর পেছনে কাজ করে, এবং ব্যাকএন্ড গেলে কন্ট্রোলড ফেইলওভার সম্ভব করে।
  • সোর্স IP পার্সিস্টেন্স সহজ তো, কিন্তু অনিচ্ছাকৃত অনুপাতে অসমান হতে পারে (একাধিক ব্যবহারকারী এক IP শেয়ার করলে) এবং ক্লায়েন্ট IP ভিজিবিলিটি পরিবর্তিত হলে ভাঙতে পারে (CDN, ফরোয়ার্ডিং প্রোক্সি)।

স্টিকনেস তখনই ব্যবহার করুন যখন তা আবশ্যক (লেজেসি সার্ভার-সাইড সেশন)। স্টেটলেস অ্যাপগুলো সাধারণত স্টিকনেস ছাড়া ভালো স্কেল ও রিকভার করে।

হেলথ চেক: অ্যাকটিভ বনাম প্যাসিভ

অ্যাকটিভ হেলথ চেক ব্যাকএন্ডগুলোকে পর্যায়ক্রমে প্রোব করে (HTTP এন্ডপয়েন্ট, TCP কানেক্ট, প্রত্যাশিত স্ট্যাটাস)। এগুলো কম ট্রাফিকে হলেও ব্যর্থতা ধরতে পারে।

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

HAProxy সমৃদ্ধ হেলথ-চেক ও ফেইলিওর-হ্যান্ডলিং কন্ট্রোলের জন্য পরিচিত (থ্রেশহোল্ড, rise/fall কাউন্ট, ডিটেইল চেক)। Nginxও ভালো চেক সমর্থন করে, তবে ক্ষমতা বিল্ড ও এডিশনে নির্ভর করে।

জিরো-ডাউনটাইম ডেপ্লয়: ড্রেইনিং ও রিট্রাই

রোলিং ডেপ্লয়ের জন্য দেখুন:

  • কানেকশন ড্রেইনিং: একটি ব্যাকএন্ডে নতুন অনুরোধ পাঠানো বন্ধ করুন, কিন্তু চলমান অনুরোধগুলো শেষ হতে দিন।
  • রিট্রাই ও রিডিসপ্যাচ: যদি একটি ব্যাকএন্ড মাঝপথে ফেল করে, সেফলি (শুধু idempotent রিকোয়েস্টগুলোর জন্য) রিট্রাই করুন বা রিকোয়েস্ট অন্য সুস্থ সার্ভারে পাঠান।

যা-ই বেছে নিন, ড্রেইনিংকে শর্ট, ভাল-সংজ্ঞায়িত টাইমআউট এবং একটি স্পষ্ট "ready/unready" হেলথ এন্ডপয়েন্টের সঙ্গে জোড়া দিন যেন ডেপ্লয়মেন্টের সময় ট্রাফিক স্মুথলি শিফট হয়।

প্রোটোকল ও TLS: HTTP, HTTP/2, এবং TCP প্রোক্সিং

আপনার টিমের সঙ্গে তৈরি করুন
টিমমেটদের নিয়ে সার্ভিস, ডেপ্লয়মেন্ট ও রোলব্যাক একসাথে ইটারেট করুন।
টিম আমন্ত্রণ করুন

রিভার্স প্রক্সিগুলো আপনার সিস্টেমের এজে বসে থাকে, তাই প্রোটোকল ও TLS বেছে নেওয়া ব্রাউজার পারফরম্যান্স থেকে সার্ভিস কমিউনিকেশন পর্যন্ত সবকিছুকে প্রভাবিত করে।

TLS টার্মিনেশন ও সার্টিফিকেট ম্যানেজমেন্ট

উভয় Nginx ও HAProxy TLS “টার্মিনেট” করতে পারে: তারা ক্লায়েন্ট থেক

সাধারণ প্রশ্ন

রিভার্স প্রক্সি এবং ফরোয়ার্ড প্রক্সির মধ্যে পার্থক্য কী?

একটি রিভার্স প্রক্সি আপনার অ্যাপ্লিকেশনগুলোর সামনে থাকে: ক্লায়েন্টরা প্রক্সি-র সঙ্গে সংযোগ করে, প্রক্সি সঠিক ব্যাকএন্ড সার্ভিসে অনুরোধ ফরওয়ার্ড করে এবং প্রতিক্রিয়া ক্লায়েন্টকে ফেরত দেয়।

একটি ফরোয়ার্ড প্রক্সি ক্লায়েন্টদের সামনে থাকে এবং তাদের আউটবাউন্ড ইন্টারনেট অ্যাক্সেস নিয়ন্ত্রণ করে (কোম্পানির নেটওয়ার্কে সাধারণ)।

লোড ব্যালান্সার কি রিভার্স প্রক্সির সমান?

একটি লোড ব্যালান্সার মূলত ট্রাফিক বিতরণে ফোকাস করে একাধিক ব্যাকএন্ড ইনস্ট্যান্সের মধ্যে। অনেক লোড ব্যালান্সারই রিভার্স প্রক্সি হিসেবে কাজ করে, তাই এই টার্মগুলো ওভারল্যাপ করে।

প্র্যাকটিক্যালি, আপনি প্রায়ই একটি টুল (যেমন Nginx বা HAProxy) ব্যবহার করবেন যা উভয়ই করে: রিভার্স প্রক্সি + লোড ব্যালান্সিং।

একটি রিভার্স প্রক্সি আর্কিটেকচারে কোথায় থাকা উচিত?

এটি সেই সীমান্তে রাখুন যেখানে আপনি একটি একক কন্ট্রোল পয়েন্ট চান:

  • এজ (পাবলিক ইন্টারনেট → আপনার সিস্টেম): TLS টার্মিনেশন, রাউটিং, বেসিক প্রোটেকশন, কনসিস্টেন্ট লগিং।
  • ইন্টারনাল (সার্ভিস → সার্ভিস): কন্ট্রোলড ট্রাফিক শেইপিং, কানেকশন ম্যানেজমেন্ট, এবং নিরাপদ রোলআউট।

কীটি হলো: ব্যাকএন্ডগুলিকে সরাসরি ক্লায়েন্টরা অ্যাক্সেস করতে দেবেন না যাতে প্রক্সি হলো নীতি ও ভিজিবিলিটির একমাত্র চোক পয়েন্ট।

“TLS/SSL টার্মিনেশন” বলতে কী বোঝায়, এবং কেন সেটা দরকার?

TLS টার্মিনেশন মানে প্রক্সি HTTPS হ্যান্ডশেক এবং এনক্রিপশন প্রসেস হ্যান্ডেল করে: ক্লায়েন্ট এর কাছে এনক্রিপ্টেড কানেকশন গ্রহণ করে, ডিক্রিপ্ট করে, এবং আপনার আপস্ট্রিমে HTTP বা পুনঃ-এনক্রিপ্টেড TLS পাঠায়।

অপারেশনাল দিকগুলো পরিকল্পনা করতে হয়:

  • স্বয়ংক্রিয় সার্টিফিকেট ইস্যু/রিনিউ (অften ACME/Let's Encrypt)
  • প্রাইভেট কী নিরাপদে সংরক্ষণ করা
  • সক্রিয় সংযোগকে ড্রপ না করে কনফিগ রিলোড করা
কখন Nginx সাধারণত ভালো নির্বাচন?

Nginx বেছে নিন যখন আপনার প্রক্সি একই সঙ্গে একটি ওয়েব “ফ্রন্ট ডোর” হিসেবেও কাজ করবে:

  • স্ট্যাটিক ফাইল কার্যকরভাবে সার্ভ করতে হবে
  • ক্যাশিং (মাইক্রো-ক্যাশিং সহ) ব্যাকএন্ড লোড কমাতে হবে
  • সহজ host/path রাউটিং, রিডিরেক্ট এবং হেডার নর্মালাইজেশন
  • সাধারণ HTTP-সেন্ট্রিক কনফিগারেশন যা প্রচলিত ওয়েব স্ট্যাকে সুবিধাজনক
কখন HAProxy সাধারণত ভালো নির্বাচন?

HAProxy বেছে নিন যখন ট্রাফিক ম্যানেজমেন্ট এবং লোডের সময় পূর্বানুমেয়তা প্রধান প্রয়োজন:

  • অনেক কনকারেন্ট কানেকশন কার্যকরভাবে হ্যান্ডেল করা
  • শক্ত লোড ব্যালান্সিং নিয়ন্ত্রণ ও অ্যালগরিদম
  • সমৃদ্ধ হেলথ চেক এবং ফেইলওভার আচরণ
  • HTTP-এর পাশাপাশি TCP (Layer 4) প্রোক্সিং যখন প্রয়োজন
Round-robin, least-connections, এবং weighted balancing কিভাবে বেছে নেব?

Round-robin ব্যবহার করুন যখন ব্যাকএন্ডগুলো অনুরূপ এবং অনুরোধের খরচ সাধারণত একই রকম।

Least connections ব্যবহার করুন যখন অনুরোধের সময়কাল ভিন্ন হয় (ডাউনলোড, দীর্ঘ API কল, লং-লিভড কানেকশন) যাতে ধীর ইনস্ট্যান্সগুলো অতিরিক্ত লোড না নেয়।

Weighted ব্যবহার করুন যখন ব্যাকএন্ডগুলো ভিন্ন (ভিন্ন ইনস্ট্যান্স সাইজ, মাইগ্রেশন ইত্যাদি) যাতে আপনি ইচ্ছাকৃতভাবে ট্রাফিক শিফট করতে পারেন।

আমার কি সেশন পার্সিস্টেন্স (স্টিকি সেশন) দরকার, আর কোন ধরণটি সেরা?

স্টিকনেস একটি ব্যবহারকারীকে একটিই ব্যাকএন্ডে ধরে রাখে:

  • ওয়েব অ্যাপের জন্য কুকি-ভিত্তিক স্টিকনেস পছন্দনীয় (স্পষ্ট এবং NAT-এর পেছনে ঠিকভাবেই কাজ করে)।
  • সোর্স-IP স্টিকনেস সাবধানতার সঙ্গে ব্যবহার করুন (অনেক ব্যবহারকারী একটি IP শেয়ার করলে অন্যায় হতে পারে)।

যখন সম্ভব স্টিকনেস এড়িয়ে চলুন: স্টেটলেস সার্ভিসগুলো সহজে স্কেল ও রিকভার করে।

প্রক্সি বাফারিং কিভাবে লেটেন্সি ও স্ট্রিমিং ওয়ার্কলোডকে প্রভাবিত করে?

বাফারিং ধীর বা উত্থিত ক্লায়েন্টদের ক্ষেত্রে সাহায্য করতে পারে যাতে অ্যাপকে গড়ের মতো ধারা দেয়।

কিন্তু স্ট্রিমিং-ওরিয়েন্টেড কাজ (SSE, WebSockets, বড় ডাউনলোড) থাকলে অতিরিক্ত বাফারিং ক্ষতিকর—মেমরি চাপ বাড়ে এবং টেইল লেটেন্সি খারাপ হতে পারে।

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

কিভাবে 502/504 ত্রুটি এবং টাইমআউট ডিবাগ করবেন?

প্রক্সি ডিলে এবং ব্যাকএন্ড ডিলে আলাদা করে দেখুন (লগ/মেট্রিক্স থেকে)।

সাধারণ তরজমা:

  • 502: ব্যাকএন্ড সংযোগ প্রত্যাখ্যান/বন্ধ করেছে, DNS সমস্যা, বা প্রটোকল মিসম্যাচ।
  • 504: প্রক্সি ব্যাকএন্ডের জন্য অপেক্ষা করতে গিয়ে টাইমআউট হয়েছে।

উপযোগী সংকেতগুলো তুলনা করুন:

সূচিপত্র
একটি রিভার্স প্রক্সি আপনার অ্যাপগুলোর জন্য কী করেNginx সারসংক্ষেপ: শক্তি ও সাধারণ ব্যবহার ক্ষেত্রHAProxy সারসংক্ষেপ: শক্তি ও সাধারণ ব্যবহার ক্ষেত্রপারফরম্যান্স বেসিক্স: লেটেন্সি, থ্রুপুট, এবং কানেকশনলোড ব্যালান্সিং ও হেলথ চেক তুলনাপ্রোটোকল ও TLS: HTTP, HTTP/2, এবং TCP প্রোক্সিংসাধারণ প্রশ্ন
শেয়ার
Koder.ai
Koder দিয়ে আপনার নিজের অ্যাপ তৈরি করুন আজই!

Koder-এর শক্তি বুঝতে সবচেয়ে ভালো উপায় হলো নিজে দেখা।

বিনামূল্যে শুরু করুনডেমো বুক করুন
  • Queue/connect টাইমিং (প্রক্সি দ্রুত ব্যাকএন্ড পৌঁছাতে পারেনি)
  • Upstream response time (ব্যাকএন্ড ধীর)
  • সমাধান সাধারণত: টাইমআউট অ্যাডজাস্ট করা, ব্যাকএন্ড ক্যাপাসিটি বাড়ানো, বা হেলথ চেক/রেডিনেস এন্ডপয়েন্ট উন্নত করা।