خوب یه دلیل برای این که بخوایم از reverse proxy ها استفاده کنیم اینه که به طور مثال انقدر سایتمون محبوب هستش که ترافیکش حیلی زیاده برای همین میایم یه کپی ازش میگیریم و برای load balace کردن میایم دو تا سایت رو run میکنیم

یه حالت دیگه که ممکنه پیش بیاد اینه که یکی از سایت های به هر دلیلی از دسترس خارج بشه

جدا کردن ترافیک سایت هم کاربرد داره

یه قابلیت خیلی مهم دیگه هم داره اینه که reverse proxy ها میتونن کاره authenction رو انجام بدن که سرور هایی که بعدش قرار دارن دیگه این نگرانی رو نداشته باشن

https://www.aparat.com/v/m649406

https://redmask.ir/learning/%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-YARP

https://www.youtube.com/watch?v=noCJjDKpv8w

این برای pesimistic هستش

میریم توی yarp gateway این پکیچ رو دانلود میکنیم

بعد میایم میگیم که تنظیمات این revierse proxy رو از کجا بیاریم ، یه راهش میشه از app setting json یه راهش میشه از دیتابیس بگیریم ، یه راهش میشه توی خود پروژه و کد بزنیم و ازش استفاده کنیم و داریم میگه که برو توی app setting قسمتی که اسمش yarp هستش برو از اونجا تنظیمات رو بردار

خوب حالا با map revers proxy داریم میگیم که خوب اون تنظمیاتی که بالا گرفتیم با این خطی که نوشتیم میایم روی route ها اعمال میکنیم که اگر کسی به اون مسیر هایی که توی تنظیمات تعیین کردیم درخواست زد اون رو map و هدایت کنه

خوب اینجا وقتی که yarp رو مینویسیم میتونیم تنظیماتش رو بنویسیم هر چیزی که در routes نوشته شود میشن مسیرهای پروژه که در app . map get استفاده میشه و اینجا داره میگه که این مسیرها اگر فراخوانی شدن این ها رو بفرستیم به اون سرور که در clusters هست و نوشتیم

خوب اسم های weather route , pessimistic هر اسم دیگه ای میتونن باشن و فرقی نمیکنه چه چیزی بزاریم ولی بقیه شون مهمن

خوب اینجا داریم میگیم که اگر مسیری که بهش داره درخواست میره در قسمت path اتفاقی که میوفته اینه که میره به cluster id یا همون سروری که براش تعیین کردیم ، اونجا اسم اون سرور رو نوشتیم که اسمش api cluster هستش و در بخش بعدی اومدیم تعیین کردیم که این api cluster آدرسش کجاست که اون درخواست رو بگیره و اجرا کنه

یعنی وقتی که درخواستی به مسیر /weather forcast زده میشه اون درخواست forward میشه به local host 7200

این hello world که نوشته در حقیقت برای api yarp هستش

خوب اینجا وقتی که اون url رو زدیم میره به api درخواست میزنه

حالا یه پروژه دیگه به اسم optimisitic میسازیم :

پورتش رو میزاریم 7300

ترتیب اجراشون فرقی نمیکنه در این حالت

وفتی که app در حال اجراست میایم یه cluster جدید تعریف میکنیم :

بعد از این که تغییر رو ایجاد کردیم این پیام ها میاد :

اینچا میاد به صورت آنلاین این مسیرها رو به پروژه اضافه میکنه

خوب چون برای یک مسیر اومدیم دو تا address تعریف کردیم ، اتفاقی که میوفته اینه که هر بار که درخواست زده میشه ، به صورت رندوم میاد اطلاعات رو میگیره

خوب اینجاست که ما میتونیم بیایم load balance بزاریم یعنی یه سری شرط بزاریم برای load balance کردن سایت و آدرس ها رو اینطوری تعریف کنیم

حالت بعدی چک کردن health check و بعد انتقال به اون سرور درست

خوب catch-all** اینطوری تمامی درخواست ها رو میگیره و هدایت میکنه سمت سرورمون که تعیین کردیم

خوب

اینجا چون route اصلی hello world هستش اون رو نشون میده

حالا اگر یه آدرس دیگه بزاریم اون رو نشون میده :

ولی همچنان روی local host 7179

خوب حالا اگر بیایم map رو کامنت کنیم :

میره روی صفحه اصلی سایت ولی همچنان با local host

حالا یه razor page میسازیم :

تا دقیقه 39:46

یه راه دیگه

اینجا چندین تا سرویس داریم و یک کلاینت ، حالا آیا این client امن هست که بدونه هر کدوم از سرویس ها کجا هستن و بهشون درخواست بزنه و مورد بعد اینه که باید به چند جا و به کدوم درخواست بزنه ؟