چند سرویس پشت یک سرور با Nginx Proxy Manager
اگر روی یک سرور بیش از یک پروژه اجرا شود، دیر یا زود به پورتهای ۸۰ و ۴۴۳ برمیخورید که فقط یک فرایند میتواند روی آنها گوش دهد. مقالهای در Habr از وبلاگ Selectel، گامبهگام نشان میدهد که چگونه با Nginx Proxy Manager این مشکل را حل کنیم.
نویسنده ابتدا مسئله را توضیح میدهد: پورتهای ممتاز، قاعده «یک شنونده برای هر پورت»، مشکلات CORS وقتی فرانتاند و بکاند روی پورتهای جدا قرار میگیرند، و نبود HTTPS. پروکسی معکوس بهعنوان واسطه این مشکل را حل میکند و ترافیک را بر اساس دامنه و مسیر هدایت میکند. مزیت دیگر این است که فایروال فقط به پورتهای ۲۲، ۸۰ و ۴۴۳ نیاز دارد.
محیط آزمایش یک VDS با ۲ vCPU، ۲ گیگابایت رم و ۴۰ گیگابایت NVMe با Ubuntu 24.04 و Docker از مخزن رسمی است. شبکه با docker network create proxy ساخته میشود و کانتینر jc21/nginx-proxy-manager با حجمهایی برای داده و گواهی راهاندازی میشود. خوشم آمد که پنل مدیریت روی پورت ۸۱ فقط به 127.0.0.1 متصل است و از طریق تونل SSH دسترسی پیدا میشود.
سپس یک میزبان پروکسی تنظیم میشود: در Forward Hostname نام کانتینر وارد میشود و گواهی SSL در برگه SSL متصل میشود. برای آزمایش از traefik/whoami استفاده شده است. حالتی که برنامه مستقیم روی میزبان اجرا میشود هم جداگانه بررسی شده: آدرس گیتوی شبکه داکر با docker network inspect به دست میآید و فایروال طوری تنظیم میشود که برنامه بدون عبور از پروکسی قابل دسترسی نباشد.
بعضی ایرادها هم دارد. مثالها دامنههای مختلف را قاطی کردهاند و ایمیج با تگ latest آمده که ممکن است با گذشت زمان تکرارپذیری را کم کند. با این حال نقطه شروع خوبی است برای کسانی که میخواهند چند سرویس را در خانه یا روی VDS اجرا کنند بیآنکه پیکربندی nginx را دستی ویرایش کنند.
منبع: Habr (وبلاگ Selectel)
نویسنده ابتدا مسئله را توضیح میدهد: پورتهای ممتاز، قاعده «یک شنونده برای هر پورت»، مشکلات CORS وقتی فرانتاند و بکاند روی پورتهای جدا قرار میگیرند، و نبود HTTPS. پروکسی معکوس بهعنوان واسطه این مشکل را حل میکند و ترافیک را بر اساس دامنه و مسیر هدایت میکند. مزیت دیگر این است که فایروال فقط به پورتهای ۲۲، ۸۰ و ۴۴۳ نیاز دارد.
محیط آزمایش یک VDS با ۲ vCPU، ۲ گیگابایت رم و ۴۰ گیگابایت NVMe با Ubuntu 24.04 و Docker از مخزن رسمی است. شبکه با docker network create proxy ساخته میشود و کانتینر jc21/nginx-proxy-manager با حجمهایی برای داده و گواهی راهاندازی میشود. خوشم آمد که پنل مدیریت روی پورت ۸۱ فقط به 127.0.0.1 متصل است و از طریق تونل SSH دسترسی پیدا میشود.
سپس یک میزبان پروکسی تنظیم میشود: در Forward Hostname نام کانتینر وارد میشود و گواهی SSL در برگه SSL متصل میشود. برای آزمایش از traefik/whoami استفاده شده است. حالتی که برنامه مستقیم روی میزبان اجرا میشود هم جداگانه بررسی شده: آدرس گیتوی شبکه داکر با docker network inspect به دست میآید و فایروال طوری تنظیم میشود که برنامه بدون عبور از پروکسی قابل دسترسی نباشد.
بعضی ایرادها هم دارد. مثالها دامنههای مختلف را قاطی کردهاند و ایمیج با تگ latest آمده که ممکن است با گذشت زمان تکرارپذیری را کم کند. با این حال نقطه شروع خوبی است برای کسانی که میخواهند چند سرویس را در خانه یا روی VDS اجرا کنند بیآنکه پیکربندی nginx را دستی ویرایش کنند.
منبع: Habr (وبلاگ Selectel)
دیدگاهها 0
اولین دیدگاه را به هر زبانی بنویس.
برای دیدگاه نوشتن وارد شو