در این قسمت قراره با هم یک ساختار پایه تعریف بکنیم و ببینیم که با استفاده از Nginx چجوری میتونیم این ساختار رو گسترش بدیم و کاری کنیم که تعداد کاربران بیشتری بتوانند از سرویسی که ما ارائه میدیم استفاده کنند.
در تصویر بالا مشاهده میکنید که ما یک سرویس داریم روی پورت 3000 که تمامی کاربران به صورت مستقیم بهش درخواست ارسال میکنند. اگه تعداد کاربران ما افزایش پیدا بکنه و این سرویس نتونه تمامی این درخواست ها رو مدیریت و پردازش کنه ما باید چه کاری انجام بدیم؟
ما در این شرایط میتونیم چندین نسخه کپی (Replica) از این سرویس را اجرا کنیم که هر کدوم روی یک پورت خاصی اجرا خواهد شد و ما میتونیم آدرس این سرویس ها را به کاربران خود بدهیم.
در تصویر بالا میتوانید مشاهده کنید که تمامی کاربران میتوانند به صورت دلخواه به کپی های سرویس درخواست ارسال کنند و این موضوع باعث کاهش بار روی سرویس ها خواهد شد، اما در همین حال باعث افزایش پیچیدگی استفاده برای کاربران خواهد شد چرا که تعداد آدرس های موجود زیاد خواهد بود و امکانش هست که هر لحظه یکی از این سرویس ها به مشکل بخوره و یا اینکه با بار زیادی داشته باشه که دوباره باعث ایجاد مشکل خواهد شد و همچنین درصورت استفاده از SSL شما مجبور خواهید شد برای هر آدرس یک گواهی جدا بسازید و هر کدوم رو به صورت جداگانه صدا کنید.
در این مواقع ما از چیزی به نام پروکسی معکوس استفاده میکنیم که یکی از ویژگی هاش متعادل کردن بار هست و Nginx هم از این ویژگی به صورت کامل پشتیبانی میکنه. ما میتونیم Nginx رو به عنوان یک رابط استاندارد در این بین قرار بدیم و کاربران ما از این به بعد به یک سرویس درخواست ارسال میکنند و Nginx میتونه بر اساس الگوریتم هایی که داره تصمیم بگیره که کدوم درخواست به کدام سرویس ارسال بشه.
همچنین با توجه به یکی شدن درخواست ها ما دیگه نیاز به ساخت تعداد بی شماری گواهی برای SSL نخواهیم داشت و میتونیم با استفاده از یک گواهی تمامی درخواست ها رو امن کنیم و از امکانات جالبی مانند HTTP/2 و .... استفاده کنیم.
با توجه به عکس بالا از این به بعد کاربران ما از طریق Nginx به سرویس های ما درخواست ارسال خواهند کرد و Nginx هم از طرف کاربر به سرویس ها درخواست ارسال میکنه و جواب نهایی رو به کاربر نمایش میده. این موضوع باعث میشه که کاربر از مقصد نهایی درخواستش بی اطلاع باشه و همچنین سرویس ها هم از ارسال کننده درخواست بی اطلاع باشند زیرا که تمامی درخواست ها توسط Nginx انجام خواهد شد.
امیدوارم که از خواندن این مطلب لذت برده باشید. لطفا اگه پیشنهاد و نکته ای دارید یا اینکه اشتباهی در مطالب بنده مشاهده کردید حتما از طریق نظرات با بنده به اشتراک بذارید.