System Design শেখো
শেখো / মৌলিক ধারণা

Proxy Servers (Forward vs Reverse)

9 মিনিট Module 1 · Fundamentals
এক নজরে
  • Forward proxy client-এর পক্ষ হয়ে কাজ করে, reverse proxy server-এর পক্ষ হয়ে।
  • Reverse proxy caching, SSL termination, security আর load distribution-এ সাহায্য করে।
  • Nginx, HAProxy reverse proxy; Cloudflare CDN+reverse proxy—এগুলো বাস্তব উদাহরণ।

সমস্যাটা কী?

ভাবো একটা বড় অফিসে শত শত কর্মী ইন্টারনেট ব্যবহার করছে। অফিস চায়—সবার request একটা জায়গা দিয়ে যাক, যাতে নির্দিষ্ট সাইট block করা যায় আর একই জিনিস বারবার download না হয়ে cache থেকে দ্রুত আসে। আবার উল্টোদিকে, একটা জনপ্রিয় website ভাবো যার পেছনে ১০টা সার্ভার চলছে। User-রা তো ১০টা আলাদা ঠিকানা মনে রাখবে না—তাদের চাই একটাই দরজা, যেটা ভেতরে ঠিক সার্ভারে কাজ পাঠিয়ে দেবে।

এই দুই সমস্যার সমাধানই proxy server—একটা মধ্যস্থতাকারী (intermediary) যে দুই পক্ষের মাঝে বসে। কিন্তু সে কার পক্ষ হয়ে দাঁড়াচ্ছে—client নাকি server—তার ওপর নির্ভর করে এটা Forward Proxy না Reverse Proxy

মূল ধারণা

Proxy server হলো একটি মধ্যবর্তী সার্ভার যা client আর destination server-এর মাঝে বসে request ও response আদান-প্রদান করে। Forward proxy client-এর পক্ষ হয়ে কাজ করে (client-side), আর reverse proxy server-এর পক্ষ হয়ে কাজ করে (server-side)।

সহজ পার্থক্য মনে রাখার উপায়: প্রশ্ন করো—"এই proxy কাকে লুকাচ্ছে?"

  • যদি client-কে লুকায় (server জানে না আসল user কে) → forward proxy।
  • যদি server-দের লুকায় (client জানে না পেছনে কয়টা সার্ভার) → reverse proxy।

কীভাবে কাজ করে

Forward Proxy-র প্রবাহ

[Client] → [Forward Proxy] → [Internet/Server]

Client সরাসরি server-এ না গিয়ে আগে proxy-তে request পাঠায়। Proxy তখন নিজের পরিচয়ে server থেকে data এনে client-কে দেয়। Server-এর কাছে মনে হয় request টা proxy থেকেই এসেছে—আসল client লুকানো থাকে।

Reverse Proxy-র প্রবাহ

[Client] → [Reverse Proxy] → [Backend Server 1, 2, 3 ...]

Client মনে করে সে সরাসরি website-এর সাথে কথা বলছে। আসলে তার request আগে reverse proxy-তে আসে, যেটা ঠিক করে কোন backend server-এ কাজটা পাঠাবে। Client জানে না পেছনে কয়টা সার্ভার আছে।

দিকForward ProxyReverse Proxy
কার পক্ষেClientServer
কাকে লুকায়Client-এর পরিচয়Backend server-গুলো
কে সেটআপ করেসাধারণত user/অফিসWebsite owner
সাধারণ কাজContent filtering, anonymity, cachingLoad distribution, SSL, security, caching
উদাহরণঅফিসের firewall proxy, VPNNginx, Cloudflare
সহজ উদাহরণ

Forward proxy হলো অফিসের পিয়ন। তুমি (client) সরাসরি বাইরে না গিয়ে পিয়নকে বলো "এই দোকান থেকে এটা এনে দাও"। দোকানদার জানে শুধু পিয়নকে, তোমাকে চেনে না। আবার পিয়ন আগে আনা জিনিস ড্রয়ারে রাখে (cache)—পরে কেউ একই জিনিস চাইলে দৌড়াতে হয় না।

Reverse proxy হলো বড় হাসপাতালের রিসেপশন। তুমি রোগী (client) ঢুকেই রিসেপশনে যাও; তারা ঠিক করে তোমাকে কোন ডাক্তারের (backend server) কাছে পাঠাবে। তুমি জানো না ভেতরে কতজন ডাক্তার আছে, কে ব্যস্ত—রিসেপশনই সব সামলায়।

কৌশল: Reverse Proxy কী কী দেয়

১. Caching

জনপ্রিয় content (ছবি, CSS, এমনকি API response) proxy নিজের কাছে রেখে দেয়, যাতে backend-এ বারবার আঘাত না করে দ্রুত response দেওয়া যায়।

২. Security ও Anonymity

Backend server-গুলোর আসল IP লুকানো থাকে। ফলে আক্রমণকারী সরাসরি সার্ভারে হামলা করতে পারে না; DDoS filtering, IP blocking proxy স্তরেই হয়।

৩. SSL Termination

HTTPS-এর encryption/decryption ভারী কাজ। SSL Termination মানে reverse proxy-তেই HTTPS শেষ করা—proxy decrypt করে নিয়ে ভেতরে plain HTTP-তে পাঠায়। ফলে প্রতিটি backend server-কে আলাদা করে certificate ও CPU খরচ করতে হয় না।

৪. Load Distribution

একাধিক backend server-এর মধ্যে request ভাগ করে দেয়, যাতে কোনো একটা সার্ভার overload না হয়।

৫. Compression ও Logging

Response gzip করে আকার ছোট করা, এবং সব traffic-এর central log রাখা—দুটোই এক জায়গায় হয়।

কখন ব্যবহার করবে / করবে না

Public-facing প্রায় সব web application-এ একটা reverse proxy থাকা উচিত—এটা security ও flexibility-র প্রথম স্তর। Forward proxy দরকার যখন তোমার client-দের traffic নিয়ন্ত্রণ বা filter করতে হয় (corporate network, parental control, anonymity)।

সাবধান

Reverse proxy-কে load balancer ভেবে গুলিয়ে ফেলো না। Load balancer-এর একমাত্র মূল কাজ traffic ভাগ করা (multiple server-এ distribute করা)। Reverse proxy অনেক বেশি কাজ করে—SSL, caching, security, compression—এবং একটামাত্র backend থাকলেও কাজে লাগে। বাস্তবে Nginx-এর মতো tool একই সাথে দুটোই হতে পারে, কিন্তু ধারণাগতভাবে load balancing হলো reverse proxy-র একটি subset/feature, পুরো জিনিস নয়।

বাস্তব উদাহরণ

  • Nginx: পৃথিবীর সবচেয়ে জনপ্রিয় reverse proxy-গুলোর একটি। অসংখ্য কোম্পানি এটাকে SSL termination, caching আর backend-এ load distribution-এর জন্য ব্যবহার করে।
  • HAProxy: high-performance load balancing ও reverse proxy-র জন্য বিখ্যাত; ব্যাংকিং ও high-traffic site-এ ব্যবহৃত হয়।
  • Cloudflare: একটি বিশাল distributed reverse proxy + CDN। তুমি যখন কোনো site Cloudflare-এর পেছনে রাখো, সব traffic আগে Cloudflare-এ যায়—সেখানে DDoS protection, caching, SSL সব হয়, তারপর তোমার origin server-এ পৌঁছায়।
  • Forward proxy-র উদাহরণ: অনেক অফিস/বিশ্ববিদ্যালয়ের ক্যাম্পাস নেটওয়ার্কে Squid-এর মতো forward proxy দিয়ে site filter ও caching করা হয়।
টিপস

Interview-তে যদি জিজ্ঞেস করে "forward আর reverse proxy-র পার্থক্য কী?"—একটা লাইনে বলো: "Forward proxy client-কে রক্ষা/লুকায়, reverse proxy server-কে রক্ষা/লুকায়।" তারপর reverse proxy-র চারটা সুবিধা (SSL termination, caching, security, load distribution) দ্রুত বলে দাও। আর "reverse proxy কি load balancer?" প্রশ্নে স্পষ্ট করো—load balancing reverse proxy-র একটা ফিচার মাত্র।

মিনি কুইজ

1. Forward proxy কার পক্ষ হয়ে কাজ করে?

2. নিচের কোনটি reverse proxy-র সাধারণ কাজ নয়?

3. Reverse proxy আর load balancer-এর সম্পর্ক কেমন?