রিভার্স প্রক্সি বনাম লোড ব্যালেন্সার: Nginx-এ কখন কোনটি ব্যবহার করবেন

Backend2026-09-23TryQuickToolBox

আপনি নিশ্চয়ই "রিভার্স প্রক্সি" এবং "লোড ব্যালেন্সার" শব্দগুলো একই অর্থে ব্যবহৃত হতে শুনেছেন। কিন্তু Nginx কনফিগার করার সময় পার্থক্যটা জানা জরুরি—এটি আপনার ইনফ্রাস্ট্রাকচার ডিজাইন, SSL হ্যান্ডলিং এবং অ্যাপ্লিকেশন স্কেলিংকে প্রভাবিত করে।

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

রিভার্স প্রক্সি কী?

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

সাধারণ ব্যবহার:

Nginx প্রায়ই Node.js, Python (Gunicorn/uWSGI), বা Java (Tomcat)-এর মতো অ্যাপ্লিকেশন সার্ভারের সামনে রিভার্স প্রক্সি হিসেবে ব্যবহৃত হয়।

লোড ব্যালেন্সার কী?

একটি লোড ব্যালেন্সার আগত ট্রাফিক একাধিক ব্যাকএন্ড সার্ভারে বিতরণ করে। এর মূল লক্ষ্য হলো প্রাপ্যতা, স্কেলেবিলিটি এবং ফল্ট টলারেন্স উন্নত করা।

মূল বৈশিষ্ট্য:

লোড ব্যালেন্সার হার্ডওয়্যার (F5, Citrix) বা সফটওয়্যার (Nginx, HAProxy, ক্লাউড LB) হতে পারে। Nginx-এর upstream মডিউল এটিকে একটি সক্ষম সফটওয়্যার লোড ব্যালেন্সার করে তোলে।

রিভার্স প্রক্সি বনাম লোড ব্যালেন্সার: মূল পার্থক্য

দিক রিভার্স প্রক্সি লোড ব্যালেন্সার
প্রধান উদ্দেশ্য অনুরোধ ফরওয়ার্ড করা, বৈশিষ্ট্য যোগ করা (SSL, ক্যাশিং) একাধিক সার্ভারে লোড বিতরণ করা
ব্যাকএন্ডের সংখ্যা সাধারণত একটি (বা কয়েকটি) একাধিক, প্রায়ই অনেক
ফোকাস কার্যকারিতা, নিরাপত্তা, পারফরম্যান্স স্কেলেবিলিটি, উচ্চ প্রাপ্যতা
হেলথ চেক ঐচ্ছিক অপরিহার্য

বাস্তবে, একটি লোড ব্যালেন্সার হলো একটি বিশেষায়িত রিভার্স প্রক্সি। Nginx সহ অনেক টুল একইসাথে উভয়ই করতে পারে।

কখন রিভার্স প্রক্সি ব্যবহার করবেন

রিভার্স প্রক্সি ব্যবহার করুন যখন আপনার প্রয়োজন:

উদাহরণ: পোর্ট 3000-এ চলমান একটি Node.js API, যেখানে Nginx HTTPS হ্যান্ডল করে এবং স্ট্যাটিক ফাইল পরিবেশন করে।

server {
    listen 443 ssl;
    server_name api.example.com;

    ssl_certificate /etc/nginx/ssl/api.example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/api.example.com.key;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

কখন লোড ব্যালেন্সার ব্যবহার করবেন

লোড ব্যালেন্সার ব্যবহার করুন যখন আপনার থাকে:

উদাহরণ: রাউন্ড-রবিন ব্যবহার করে Nginx-এর পিছনে তিনটি Node.js ইনস্ট্যান্স।

upstream backend {
    server 10.0.0.1:3000;
    server 10.0.0.2:3000;
    server 10.0.0.3:3000;
}

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Nginx সমানভাবে অনুরোধ বিতরণ করবে। আপনি আচরণ সূক্ষ্মভাবে টিউন করতে হেলথ চেক এবং অন্যান্য প্যারামিটার যোগ করতে পারেন।

Nginx-এ উভয় ভূমিকা একত্রিত করা

বাস্তব জগতের বেশিরভাগ সেটআপ Nginx-কে রিভার্স প্রক্সি এবং লোড ব্যালেন্সার উভয় হিসেবেই ব্যবহার করে। উদাহরণস্বরূপ:

upstream app_servers {
    least_conn;
    server 10.0.0.1:3000 max_fails=3 fail_timeout=30s;
    server 10.0.0.2:3000 max_fails=3 fail_timeout=30s;
    server 10.0.0.3:3000 backup;
}

server {
    listen 443 ssl;
    server_name app.example.com;

    ssl_certificate /etc/nginx/ssl/app.example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/app.example.com.key;

    location /static/ {
        root /var/www/static;
        expires 30d;
    }

    location / {
        proxy_pass http://app_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

এখানে, Nginx SSL টার্মিনেট করে, স্ট্যাটিক ফাইল পরিবেশন করে এবং হেলথ চেকসহ তিনটি অ্যাপ সার্ভারে লোড ব্যালেন্স করে।

রিভার্স প্রক্সি / লোড ব্যালেন্সার হিসেবে Nginx-এর জন্য সেরা অনুশীলন

বটলনেক চিহ্নিত করার জন্য Nginx লগ বিশ্লেষণ crucial। Nginx Log Analyzer-এর মতো টুল আপনাকে অ্যাক্সেস লগ পার্স করতে এবং ধীর আপস্ট্রিম বা ত্রুটি দ্রুত শনাক্ত করতে সাহায্য করতে পারে।

FAQ

Nginx কি একইসাথে রিভার্স প্রক্সি এবং লোড ব্যালেন্সার হতে পারে?

হ্যাঁ। Nginx একইসাথে SSL টার্মিনেট করতে, কন্টেন্ট ক্যাশ করতে এবং একাধিক ব্যাকএন্ডে অনুরোধ বিতরণ করতে পারে। upstream ব্লক ব্যাকএন্ড পুল সংজ্ঞায়িত করে, আর proxy_pass ডিরেক্টিভ অনুরোধ ফরওয়ার্ড করে।

যদি আমার শুধু একটি ব্যাকএন্ড সার্ভার থাকে তাহলে কি লোড ব্যালেন্সার দরকার?

অগত্যা নয়। একা একটি রিভার্স প্রক্সি SSL, ক্যাশিং এবং নিরাপত্তা সামলাতে পারে। কিন্তু একাধিক ব্যাকএন্ডসহ একটি লোড ব্যালেন্সার যোগ করলে প্রাপ্যতা উন্নত হয়—একটি সার্ভার ব্যর্থ হলে অন্যগুলো ট্রাফিক পরিবেশন করতে পারে।

Nginx কীভাবে সিদ্ধান্ত নেয় কোন ব্যাকএন্ডে অনুরোধ পাঠাবে?

ডিফল্টভাবে, Nginx রাউন্ড-রবিন ব্যবহার করে। আপনি least_conn (সর্বনিম্ন সংযোগ), ip_hash (ক্লায়েন্ট IP-ভিত্তিক স্টিকি সেশন), বা hash (কাস্টম কী)-এর মতো ডিরেক্টিভ দিয়ে এটি পরিবর্তন করতে পারেন।

আপনার Nginx সেটআপ অপ্টিমাইজ করতে প্রস্তুত? পারফরম্যান্স সমস্যা উন্মোচন এবং আপনার কনফিগারেশন সূক্ষ্মভাবে টিউন করতে আমাদের ফ্রি Nginx লগ পার্সার দিয়ে আপনার লগ বিশ্লেষণ শুরু করুন।