آموزش

مکانیزم Reverse Proxy در Nginx چیست؟

مکانیزم Reverse Proxy در Nginx چیست؟

جهان دیجیتالی امروزی روز به روز درحال افزایش کاربر می‌باشد و روز به روز افراد متعددی وارد این دنیا می‌شوند و در مقاطع مختلف آن فعالیت ها و رفت و آمد های دارند که یکی از این مقاطع در دنیای دیجیتالی وب سایت ها می‌باشند که یکی از موفق ترین مقاطع در این دنیا دیجیتالی امروزی هستند.

امروزه کمتر کسی پیدا می شود که سروکاری با تحقیق و جست و جو نداشته باشد که همه این ها اخر سر به مقالات و اطلاعات و فایل های که درون این وب سایت های هستند ختم می‌شود. زیرا بهترین منبع اطلاعاتی این وب سایت ها هستند. اما بحث نگهداری و جلوگیری از، ار دردسترس خارج شدن یک وب سایت خود معضلی می‌باشد.

کار های متعددی وجود دارد که موجب از مدار خارج شدن وب سرور یک سایت می‌شوند از جمله آن‌ها حملات سایبری هستند که امروزه سازمان ها و مقاطع برای از بین بردن و آسیب زدن به حریفان خود نیز از این تکنینک ها استفاده می‌کنند.

یا برای مثال وب سایتی وجود دارد که مقدار بازذیذ کنندگان و ارتباطاتی که در آن ایجاد میشود بیشتر از حد توان سرور آن باشد و ممکن است سرور توانایی پاسخ گویی به همه درخواست هارا نداشته باشد و از مدار خارج شود.

روش های بسیاری وجود دارد که می‌توانند از دسترس خارج نشدن یک سرور وب را تضمین کنند اما در این مقاله ما قصد داریم بررسی کنیم چگونه می‌توانیم از وب سرور Nginx به عنوان یک Reverse Proxy استفاده کنیم و تعادل بار را بر روی چندین سرور داشته باشیم

مکانیزم Reverse Proxy در Nginx چیست؟

این مکانیزم وظیفه این را دارد که تعادل بار و Load Balancing را بر روی چندین سرور وب انجام دهد.

این مکانیزم بدین شکل می‌باشد که فرض کنید ما 4 سرور داریم و قرار است 4 سرور ما به عنوان وب سرور وب سایت KaliBoys شناخته شوند بدین شکل که همزمان از چهار سرور بتوانیم دسترسی به وب سایت را داشته باشیم اینجاست که Reverse Proxy به کمک ما می آید.

یکی از این بهترین Load Balancer ها Nginx درحالت Reverse Proxy می‌باشد که توانایی پیاده سازی Load Balancing را برای ما به صورت کامل فراهم می‌سازد و امروزه در اکثر جاه ها از آن استفاده می‌شود.

مزایا استفاده از Nginx درحالت Reverse Proxy

مزایا و فواید متعدد و مختلفی وجود دارد که ما Nginx را به حالت Reverse Proxy استفاده کنیم و از آن مزیت ها بهره ببریم؛ از جمله این مزیت ها عبارتند از:

  • توانایی ایجاد Load Balancing و توزیع بار روی سرور های سمت Back-End
    توانایی ارسال/دریافت درخواست ها از سرور ها به مقصد های خودشان بدون ایجاد تداخل بین درخواست های کاربران
  • ایجاد دسترسی پذیری بیشتر و داشتن اطمینان از، از دسترس خارج نشدن سرور بدین شکل که اگر یکی از سرور ها منفجر شود برای مثال :))) سرور های دیگر بتوانند جای آن را پر کنند و درخواست ها در سروری دیگر میزبانی شوند
  • توانایی ایجاد امنیت و ناشناس سازی سرور های وب سایت بدین شکل که Reverse Proxy تضمین می‌دهد که در ارسال/دریافت بسته ها هویت سرور ها به طور کامل ناشناخته می‌باشند
  • توانایی پشتیبانی از Https و TLS به منظور رمزگذاری بسته ها

نحوه پیاده سازی Nginx درحالت Reverse Proxy

برای اینکه ما بتوانیم Nginx را درحالت Reverse Proxy پیاده سازی کنیم. قبل از انجام اینکار ابتدا بر روی یک سرور جدا این فرآیند را تست کنید و درصورتی که از فرآیند اجرا شده راضی بودید و به طور کامل فرآیند Reverse Proxy برای شما فعال شد آن ‌‌وقت آن را بر روی سرور های اصلی خود انجام دهید.

به عنوان مثال میتوانید از وب سرور WebFs که یک وب سرور سبک و ساده است برای تست اینکار استفاده کنید همچنین این وب سرور بر روی پورت 8000 کار میکند. نحوه نصب آن نیز بدین شکل می‌باشد

sudo apt install webfs

درمثال زیر یک ما یک Reverse Proxy را با استفاده از Nginx بر روی یک وب سرور Apache پیاده سازی می‌کنیم. ابتدا مخازن APT را آپدیت می‌کنیم و بعد Nginx را نصب می‌کنیم.

sudo apt update
sudo apt install ngnix

نکته: درصورتی که از شما سوالی مبنی بر اجازه نصب پرسید می‌بایست Y را بزنید و Enter کنید. دستور زیر را وارد کنید تا قابلیت Virtual Host در Nginx غیرفعال شود

unlink /etc/nginx/sites-enabled/default

وارد دایرکتوری /etc/nginx/sites-available شوید و یک فایل Reverse-Proxy.conf را ایجاد کنید.

cd /etc/nginx/sites-available
nano reverse-proxy.conf

در این مرحله کانفیگ زیر را در فایلی که ایجاد کردیم قرار می‌دهیم و Traffic های که به سمت Port 80 می‌آیند را به سمت Port 8000 وب سرور WebFS ارسال می‌کنیم(بسته به شرایط مورد نظرتان کانفینگ را تغییر دهید).

نکته: فایل Access log و Error Log را در مسیر /var/log/nginx می‌توانید پیدا کنید.

server {
        listen 80;
        listen [::]:80;

        access_log /var/log/nginx/reverse-access.log;
        error_log /var/log/nginx/reverse-error.log;

        location / {
                    proxy_pass http://127.0.0.1:8000;
  }
}

کانفیگ مسیر /etc/nginx/sites-available را در مسیر /etc/nginx/sites-enabled کپی کنید.

ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf

برای تست Nginx از دستور زیر استفاده کنید.

Nginx -t

خروجی دستور بالا می‌بایست به شکل زیر باشد.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

امیرحسین تنگسیری نژاد

کارشناس مشاور و مدرس شبکه و امنیت شبکه, حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند EndPoint Security, PenTest ,Forensic و SoC فعالیت داشته و دارم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا