হোমল্যাব ও নিজস্ব সার্ভার

Nginx Proxy Manager দিয়ে একটি সার্ভারের পেছনে একাধিক সার্ভিস

একটি সার্ভারে একাধিক প্রকল্প চালালে আজ না হয় কাল 80 ও 443 পোর্টের সমস্যায় পড়তেই হয়, যেখানে একসময়ে একটিমাত্র প্রসেস শুনতে পারে। Selectel ব্লগের একটি Habr নিবন্ধ ধাপে ধাপে দেখায়, Nginx Proxy Manager দিয়ে এটি কীভাবে সমাধান করা যায়।

লেখক প্রথমে সমস্যাটি ব্যাখ্যা করেন: বিশেষাধিকারপ্রাপ্ত পোর্ট, 'এক পোর্টে একটিমাত্র লিসেনার' নিয়ম, ফ্রন্টএন্ড ও ব্যাকএন্ড আলাদা পোর্টে থাকলে CORS-এর সমস্যা, এবং HTTPS না থাকা। রিভার্স প্রক্সি মধ্যস্থ হিসেবে ডোমেইন ও পাথ অনুযায়ী ট্রাফিক পাঠিয়ে এটি সমাধান করে। আরেকটি সুবিধা হলো, ফায়ারওয়ালে শুধু 22, 80 ও 443 পোর্ট খোলা লাগে।

পরীক্ষার পরিবেশ একটি VDS: 2 vCPU, 2 GB RAM, 40 GB NVMe, সঙ্গে Ubuntu 24.04 এবং অফিসিয়াল রিপোজিটরি থেকে Docker। docker network create proxy দিয়ে নেটওয়ার্ক বানানো হয়, তারপর ডেটা ও সার্টিফিকেটের ভলিউমসহ jc21/nginx-proxy-manager কন্টেইনার চালু করা হয়। ভালো লেগেছে যে 81 পোর্টের অ্যাডমিন প্যানেল শুধু 127.0.0.1-এ বাঁধা এবং SSH টানেলের মাধ্যমে প্রবেশ করা হয়।

এরপর একটি প্রক্সি হোস্ট কনফিগার করা হয়: Forward Hostname-এ কন্টেইনারের নাম দেওয়া হয়, আর SSL সার্টিফিকেট SSL ট্যাবে যুক্ত হয়। পরীক্ষার জন্য traefik/whoami ব্যবহৃত হয়েছে। অ্যাপ সরাসরি হোস্টে চললে কী করতে হবে, সেটিও আলাদাভাবে বলা হয়েছে: docker network inspect দিয়ে Docker নেটওয়ার্কের গেটওয়ে ঠিকানা পাওয়া যায়, এবং ফায়ারওয়াল এমনভাবে সেট করা হয় যাতে প্রক্সি এড়িয়ে অ্যাপে সরাসরি পৌঁছানো না যায়।

কিছু দুর্বলতাও আছে। উদাহরণে বিভিন্ন ডোমেইন মেশানো হয়েছে, আর ইমেজটি latest ট্যাগে নেওয়া হয়েছে, যার ফলে সময়ের সাথে পুনরুৎপাদনযোগ্যতা কমে যেতে পারে। তবু যাঁরা nginx কনফিগ হাতে বদলানো ছাড়া বাড়িতে বা VDS-এ একাধিক সার্ভিস চালাতে চান, তাঁদের জন্য এটি ভালো শুরু।

সূত্র: Habr (Selectel ব্লগ)

মন্তব্য 0

যেকোনো ভাষায় প্রথম মন্তব্যটি করুন।

মন্তব্য করতে লগ ইন করুন