بسیاری از کسبوکارها از پروکسیها برای عبور و ایمنسازی ترافیک بین شبکهها استفاده میکنند. بهطورکلی، دو نوع پروکسی معکوس بهنام Reverse Proxy و Forward Proxy وجود دارد. اما اغلب مردم در تشخیص این دو مفهوم دچار سردرگمی میشوند. در این مطلب توضیح میدهیم که Reverse Proxy چیست و چه تفاوتی با Forward Proxy دارد. همچنین، توضیح میدهیم که مدیران و ادمینها چگونه میتوانند از پروکسی معکوس برای مدیریت دسترسی آسانتر استفاده کنند.
پروکسی چیست؟
در رایانه، یک سرور پروکسی یک سرور است که به عنوان واسطه بین یک کلاینت که درخواست یک منبع کرده و سروری که آن منبع را ارائه می دهد، عمل میکند. هنگامی که یک کلاینت منبعی را از یک وب سایت درخواست میکند، درخواست ابتدا به سرور پروکسی ارسال میشود. سپس سرور پروکسی منبع را از وب سایت می گیرد و آن را به کلاینت برمی گرداند. این می تواند حریم خصوصی، امنیت و عملکرد را بهبود بخشد.
سرورهای پروکسی می توانند برای اهداف مختلفی استفاده شوند، از جمله:
ناشناس بودن: سرورهای پروکسی را می توان برای پنهان کردن آدرس IP کاربر استفاده کرد، که پیگیری فعالیت آنلاین کاربر را برای وب سایتها دشوارتر میکند.
امنیت: سرورهای پروکسی را میتوان برای فیلتر کردن ترافیک مخرب، مانند ویروسها و بدافزار استفاده کرد.
عملکرد: سرورهای پروکسی را میتوان برای ذخیره وب سایتهای پرطرفدار استفاده کرد، که می تواند زمان بارگذاری را افزایش دهد.
دسترسی به محتوای مسدود شده جغرافیایی: سرورهای پروکسی را می توان برای دسترسی به وب سایتهایی که در یک کشور یا منطقه خاص مسدود شدهاند استفاده کرد.
Reverse Proxy چیست؟
در پاسخ به اینکه Reverse Proxy چیست میتوان گفت نوعی پروکسی سرور است. برخلاف پروکسیهای قدیمی که برای محافظت از کلاینتها استفاده میشدند، پروکسی معکوس برای محافظت از سرورها و امنیت سرور کاربرد دارد. پروکسی معکوس، سروری است که درخواست کلاینت را میپذیرد، آن را به یکی دیگر از سرورها ارسال میکند و نتایج را از سروری که درخواست را پردازش کرده به مشتری برمیگرداند، بهطوریکه انگار سرور پروکسی خودش درخواست را پردازش کرده است. Forward Proxy به چندین کلاینت اجازه میدهد ترافیک را از یک شبکه خارجی عبور دهند.
به عنوان مثال، کسبوکارها ممکن است از این پروکسی برای فیلتر و هدایت ترافیک عبوری مورداستفاده کارکنان در اینترنت عمومی استفاده کنند. از سوی دیگر پروکسی معکوس، ترافیک را از طرف چندین سرور هدایت میکند. درواقع، پروکسی معکوس به عنوان دروازهای بین کلاینتها، کاربران و سرورهای اپلیکیشن عمل میکند. همچنین، تمامی قوانین و مقررات دسترسی و عبور ترافیک را کنترل میکند و از هویت سروری که درخواست را پردازش کرده است محافظت میکند.
نحوه کار Reverse Proxy به چه صورت است؟
Reverse Proxy در جریان ترافیک عبوری، با سرویس احراز هویت سازمانها (به عنوان مثال، فرایند ورود به سیستم یا Sign-on) ادغام میشود. هنگام پیکربندی سرویسها و برنامهها برای تعامل با پروکسی معکوس، پروکسی میتواند بهصورت درون خطی کار کند. این باعث میشود تا تجربه کاربری سادهای داشته باشد که از طریق عبور ترافیک ورودی به برنامههای ابری میسر شده است. موارد مشابه نیز بهطورخودکار به پروکسی معکوس هدایت میشوند.
اما بیایید این فرایند را دقیقتر نگاه کنیم. پروکسی معکوس میتواند از دادههای حساس (مانند دادههای PCI، PII) محافظت کند. درواقع به عنوان یک واسطه برای سروری که این دادهها در آن قرار دارند، عمل میکند و به این ترتیب، از دادههای حساس محافظت میکند. درخواستهای کلاینت ابتدا به Reverse Proxy هدایت میشوند، سپس از یک پورت مشخص در هر فایروال قابل اجرا عبور داده میشوند و سپس به سرور محتوا میرسند و در نهایت این مسیر را برمیگردند.
کلاینت و سرور هرگز بهطورمستقیم با هم ارتباط برقرار نمیکنند. اما کلاینت پاسخها را طوری تفسیر میکند که انگار بهطورمستقیم با هم درارتباط هستند. مراحل این فرایند به شرح زیر است:
- کلاینت، یک درخواست ارسال میکند که Reverse Proxy آن را رهگیری میکند.
- Reverse Proxy درخواست ورودی را به فایروال ارسال میکند (Reverse Proxy را میتوان طوری پیکربندی کرد که مستقیما به درخواستهای فایلهای موجود در حافظه پنهان خود بدون برقراری ارتباط با سرور پاسخ دهد).
- فایروال، یا درخواست را مسدود میکند یا آن را به سرور ارسال میکند.
- سرور پاسخ را از طریق فایروال به پروکسی ارسال میکند.
- Reverse Proxy پاسخ را به کلاینت ارسال میکند.
Reverse Proxy همچنین میتواند پاسخهای سرور را پاکسازی کند. به این ترتیب، هکرها اطلاعات موردنیاز برای هدایت و دسترسی به منابع داخلی محافظت شده را به دست نخواهند آورد و همچنین، این فرایند از سایر آسیبپذیریها نیز جلوگیری میکند.
نرم افزار متن باز و پروکسی Reverse
پروکسیهای Reverse اغلب در نرم افزارهای متن باز (OSS) بهکار میروند. دلیل آن هم این است که توسعه دهندگان را قادر میسازد تا به سورس کد دسترسی پیدا کنند، آن را تغییر دهند و توزیع کنند. بسیاری از Reverse Proxyهای منبع باز، ویژگیهای انعطافپذیر و قابل تنظیمی را ارائه میکنند که کاربران را قادر میسازند پروکسی را مطابق با نیاز خود تنظیم کنند.
به عنوان مثال، Nginx، Apache و HAProxy همگی پروکسیهای معکوس هستند که بهواسطه عملکرد OSS خود، تعادل بار، Cashing، بارگذاری SSL و درخواست مسیریابی HTTP را ارائه میکنند. قابلیت OSS پروکسیهای Reverse، برای اهداف امنیتی هم کاربرد دارد. زیرا امکان بررسی کد برای شناسایی آسیبپذیریها و پیشنهاد اصلاحات را فراهم میکند.
دلایل استفاده از Reverse Proxy چیست؟
بسیاری از کسبوکارها، بهویژه شرکتهای بزرگ، از وب سایتهای سفارشی استفاده میکنند که متناسب با نیازهای منحصربهفرد آنها ساخته شدهاند و روی وردپرس اجرا نمیشوند. نمونهای از آنها، وب سایتهای بانکی و بیمه است. در موارد دیگر، کسبوکارها ممکن است سایت خود را روی یک سرویس خارجی میزبانی کنند که به آنها اجازه نصب هیچ نرم افزار خارجی (مانند وردپرس) را نمیدهد. معمولا اینها خردهفروشان کوچک تا متوسط هستند که از یک پلتفرم تجارت الکترونیک مانند Shopify استفاده میکنند.
از آنجایی که وردپرس دارای ویژگیهای CMS قدرتمندی است، بسیاری از مشاغل از جمله شرکتهای بزرگ با وب سایتهای سفارشی، ممکن است وردپرس را ترجیح دهند. یکی از راههای دور زدن این مشکل، نصب وردپرس در زیردامنه یا ساب دامین وب سایت اصلی و ساختار منوهای پیمایش است که کاربران بتوانند به راحتی بین وب سایت اصلی و زیردامنه جابجا شوند. البته، دقت داشته باشید که با توجه به اینکه زیردامنهها به عنوان یک دامنه منحصربهفرد عمل میکنند، این کار میتوان روی SEO سایت شما تاثیرگذار باشد.
حتی اگر گوگل با هر دو زیردامنه و دایرکتوری فرعی (Subdirectory) به یک شکل رفتار کند، بهینهسازی وب سایتی که روی یک زیردامنه میزبانی میشود، دشوارتر از انجام این کار نسبت به زمانی است که در ساب دایرکتوری میزبانی شود. علیرغم اینکه گوگل تاکید کرده که با هر دو زیردامنه و دایرکتوری فرعی به یک شکل رفتار میکند، اما برخی از کارشناسان سئو نظر متفاوتی دارند. بهطور کلی، حتی اگر بر سئوی سایت تاثیری نداشته باشد، نگهداری سایتی که در یک دایرکتوری فرعی میزبانی میشود میتواند تا حدی راحتتر باشد.
به همین دلیل است که میتوانید از Reverse Proxy برای هدایت درخواستها به وبلاگ سایت خود که در یک سرور جداگانه میزبانی میشود استفاده کنید. به عنوان مثال، یک بانک میتواند وب سایت اصلی خود را به شکل کاملا ایمن روی سرورهای خود میزبانی کند، اما در عین حال میتواند وبلاگ وردپرسی خود را بهطور جداگانه روی یک هاست وردپرس نگهداری کند. یکی کردن دو سایت مختلف که از یک نام دامنه استفاده میکنند، یکی از ویژگیها و مزایای کلیدی استفاده از پروکسی معکوس است. این ویژگی به برندها کمک میکند تا سایتهای خود را بهشکلمنظم و حرفهای نگهداری کنند و اعتبار خود را نیز حفظ کنند.
برای راه اندازی یک پروکسی معکوس بر روی یک سرور مجازی لینوکس، نیاز به نصب و پیکربندی یک نرم افزار پروکسی معکوس مانند Nginx یا Apache خواهید داشت. پس از نصب نرم افزار، باید آن را برای ارسال درخواستها به سرورهای وب مناسب پیکربندی کنید.
مزایای استفاده از Reverse Proxy
مزایای استفاده از Reverse Proxy چیست؟ در این بخش برخی از اصلیترین مزایای راه اندازه Reverse Proxy روی یک سرور میپردازیم:
تعادل بار
یک سرور به تنهایی نمیتواند تمام ترافیک ورودی یک وب سایت با میلیونها بازدید کننده روزانه را مدیریت کند. در این شرایط، میتوان ترافیک را بهصورت هوشمند بین مجموعهای از سرورهای متعدد توزیع کرد. معمولا همه سرورها محتوای یکسانی را میزبانی میکنند تا راحتتر بتوان به وب سایت اطمینان کرد. استفاده از Reverse Proxy یک راه عالی برای تحقق این امر است زیرا میتواند ترافیک ورودی را قبل از رسیدن به سرور مبدا دریافت کند.
اگر سرور مبدا Overload شود یا بهطور کامل از کار بیفتد، میتواند ترافیک را بدون تاثیر بر عملکرد سایت به سرورهای دیگر توزیع کند. پروکسیهای معکوس همچنین میتوانند درخواستهای دریافتی را به چندین سرور هدایت کنند، این در حالی است که عملکرد خاصی که برای آن بهینهسازی شدهاند را نیز حفظ میکنند. سپس پروکسی معکوس میتواند پاسخها را از همه سرورها جمعآوری کرده و به کلاینت ارسال کند.
تعادل بار جهانی سرور (GSLB)
دومین مزیت Reverse Proxy چیست؟ GSLB یک روش پیشرفته متعادل کننده بار برای توزیع ترافیک وب سایت در بین سرورهای سراسر دنیا است. این روش از طریق تکنیک مسیریابی Anycast انجام میشود. در این تکنیک Reverse Proxy گره یا نود سرور را براساس کوتاهترین و سریعترین مسیر بین کلاینت و سرور انتخاب میکند. GSLB نه تنها امنیت سایت را بهطور قابلتوجهی ارتقاء میدهد، بلکه زمان بارگذاری و Latency را نیز کاهش میدهد و درنتیجه، تجربه کاربران را بهبود میدهد.
امنیت پیشرفته
پروکسیهای Reverse میتوانند آدرس IP و سایر ویژگیهای سرورهای مبدا را پنهان کنند. بنابراین، سرور مبدا وب سایت شما میتواند ناشناس بماند و این، امنیت آن را به میزان قابلتوجهی افزایش میدهد. باتوجه به اینکه Reverse Proxy تمام ترافیک را قبل از رسیدن به سرور اصلی دریافت میکند، هدف قرار دادن وب سایت شما با تهدیدات امنیتی مانند حملات DDoS برای هر هکر و مهاجم دیگری دشوار خواهد شد.
شما میتوانید از یک فایروال قدرتمند برای تقویت پروکسی معکوس استفاده کنید تا از آن دربرابر حملات سایبری رایج، بیشتر محافظت کنید. بدون نصب Reverse Proxy، حذف بدافزارها دشوار است. پروکسی معکوس میتواند احراز هویت HTTP را به وب سرورهایی که از آن استفاده نمیکنند، اضافه کند. همچنین، میتوانید از پروکسی معکوس برای افزودن احراز هویت متمرکز برای انواع مختلف درخواستها استفاده کنید.
ذخیره سازی قدرتمند
شما با کشینگ محتوای ثابت و پویا، میتوانید از پروکسی معکوس برای افزایش سرعت سایت خود استفاده کنید. این امر بار روی سرور مبدا را کاهش میدهد و در نتیجه، باعث افزایش سرعت سایت میشود. به عنوان مثال، اگر سرور اصلی سایت شما در آمریکا قرار دارد و یک کاربر از اروپا از آن بازدید کند، میتوانید نسخه کش شده سایت خود را از یک سرور پروکسی معکوس در اروپا برای او اجرا کنید. باتوجه به اینکه پروکسی معکوس نسبت به سرور اصلی به کاربر نزدیکتر است، بارگذاری وبسایت زمان کمتری میبرد و عملکرد فوقالعادهای ارائه میکند.
فشرده سازی عالی
پاسخهایی که به سرور ارسال میشوند، پهنای باند زیادی مصرف میکنند. فشرده سازی پاسخهای سرور (مثلا با gzip) قبل از ارسال آنها به کلاینت میتواند مقدار پهنای باند مصرفی را کاهش دهد و سرعت پاسخهای سرور را در شبکه افزایش دهد. Reverse Proxy برای فشرده سازی پاسخهای سرور بسیار مناسب است. زیرا بین سرورهای مبدا و کلاینت قرار میگیرد.
رمزگذاری SSL بهینه شده
رمزگذاری و رمزگشایی درخواستهای SSL/TSL برای هر کلاینت، کار بسیار سختی برای سرور مبدا است. Reverse Proxy میتواند این کار را انجام دهد تا منابع سرور مبدا برای کارهای مهم دیگر مانند ارائه محتوا، آزاد شود. یکی دیگر از مزایای رمزگذاری و رمزگشایی SSL/TSL توسط پروکسی معکوس، کاهش Latency برای کلاینتهایی است که از نظر جغرافیایی از سرور مبدا فاصله دارند.
تست A/B بهتر
اکثر ابزارهای تست A/B برای بارگذاری عملکردهایشان، شما را ملزم به استفاده از کتابخانههای خارجی جاوااسکریپت میکنند. اما بارگذاری اسکریپتهای شخص ثالث میتواند باعث کند شدن سرعت بارگذاری سایت شما شود و تجربهای ناخوشایند برای کاربران ایجاد کند. در عوض، میتوانید از یک Reverse Proxy برای ایجاد دو جریان مجزا در سطح سرور استفاده کنید. برای مثال، میتوانید از روشهای split_clients یا sticky route برای کنترل تغییر مسیر ترافیک استفاده کنید.
ثبت و نظارت بر ترافیک
Reverse Proxy هر درخواستی که از آن عبور میکند را میپذیرد. از این رو، میتوانید از آن به عنوان یک مرکز ثبت و نظارت بر ترافیک استفاده کنید. حتی اگر از چندین وب سرور برای میزبانی بخشهای مختلف وب سایت خود استفاده میکنید، استفاده از پروکسی معکوس نظارت بر تمام دادههای ورودی و خروجی از سایت شما را آسانتر میکند.
کاربردهای Reverse Proxy چیست؟
درخصوص این سوال که کاربردهای Reverse Proxy چیست میتوان به موارد زیر اشاره کرد:
- شبکههای توزیع محتوا (CDN): CDNها شبکههایی از سرورها هستند که در سراسر جهان توزیع شدهاند. از Reverse Proxyها برای Cashing محتواها در سرورهای CDN و تحویل آن به مشتریان براساس موقعیت مکانی آنها استفاده میشود. این میتواند عملکرد برنامههای وب را بهبود ببخشد و بار روی سرورهای مبدا را کاهش دهد.
- تعادل بار: از Reverse پروکسیها میتوان برای توزیع ترافیک در چندین وب سرور استفاده کرد. این میتواند باعث بهبود عملکرد و امنیت شود. زیرا از Overload شدن سرورها جلوگیری میکند.
- امنیت: از پروکسیهای معکوس میتوان برای مخفی کردن هویت و مکان وب سرورها و فیلتر کردن درخواستها و مسدود کردن ترافیک مخرب استفاده کرد.
- SSL Termination: از پروکسیهای معکوس میتوان برای محدود کردن اتصالات SSL/TLS و رمزگشایی ترافیک قبل از رسیدن به وب سرورها استفاده کرد. این میتواند عملکرد وب سرورها را بهبود بخشد و بار آنها را کاهش دهد.
- توسعه برنامه: از پروکسیهای Reverse میتوان برای توسعه و آزمایش برنامههای وب کاربردی بدون انتشار آنها در اینترنت عمومی استفاده کرد.
- Microservices: میتوان از پروکسی معکوس برای هدایت ترافیک به میکروسرویسهای مختلف براساس مسیر درخواست استفاده کرد. این میتواند به بهبود مقیاس پذیری و قابلیت نگهداری معماریهای مبتنی بر میکروسرویس کمک کند.
پیکربندی Reverse Proxy
با عبور ترافیک کلاینت از Reverse Proxy ادمینها میتوانند امنیت سایت خود را ارتقاء دهند. آنها میتوانند سرورهای Backend را به شکلی پیکربندی کنند که ترافیک را فقط از پروکسی بپذیرند و سپس، پیکربندیهای کنترل دسترسی را روی خود پروکسی پیکربندی کنند.
به عنوان مثال، ادمینها میتوانند فایروال پروکسی Reverse را در لیست سفید یا لیست سیاه آدرسهای IP پیکربندی کنند. تمام سرورهای موجود در پروکسی بر این اساس محافظت خواهند شد و هر زمان که ادمینها یک سرور Backend جدید را به شبکه اضافه کنند که به شکلی پیکربندی شده تا فقط درخواستهای سرور پروکسی را بپذیرد، سرور بک اند جدید مطابق با پیکربندی پروکسی محاظت میشود.
استفاده از Reverse Proxy همچنین میتواند به مدیران اجازه دهد تا به راحتی سرورهای Backend را بدون ایجاد اختلال در ترافیک، به داخل و خارج از آن ارسال کنند. از آنجایی که کلاینتها مستقیما با پروکسی تعامل دارند، فقط باید نام میزبان آن را بدانند و نیازی نیست که نگران تغییرات توپولوژی شبکه Backend باشند. علاوهبر سادهسازی پیکربندی کلاینت، ادمین میتواند پروکسی معکوس را برای تعادل بار ترافیک پیکربندی کند تا درخواستها بهطور یکنواخت در سرورهای Backend توزیع شوند و عملکرد کلی را بهبود بدهند.
مقایسه پروکسی Reverse و Forward
اگرچه پروکسی Reverse و Forward شباهتهای زیادی به هم دارند، اما عملکرد آنها با هم متفاوت است. با توجه به اینکه عملکرد یکدیگر را تحت تاثیر قرار نمیدهند، میتوانند با هم کار کنند. به طور معمول، کاربران یا کلاینتها از پروکسی Forward استفاده میکنند، در حالی که سرورهای مبدا از پروکسی Reverse استفاده میکنند. از آنجایی که ادمین سرور میتواند نحوه عملکرد پروکسی Reverse را کنترل کند، میتواند از مزایای آن که در بخشهای قبل نام بردیم، بهرهمند شود.
سیستمهای CDN چگونه از Reverse Proxy استفاده میکنند؟
سیستمهای CDN از فناوری Reverse Proxy برای مدیریت ترافیک ورودی و خروجی استفاده میکنند. مزایای Reverse Proxy برای سیستمهای CDN به شرح زیر است:
ذخیره سازی محتوا
پروکسیهای Reverse در چندین مکان مختلف قرار میگیرند، جایی که یک نسخه از صفحات وب سایتها فشرده و ذخیره میشود. این امر باعث میشود تا براساس موقعیت جغرافیایی کلاینت، محتوا سریعتر به دست او برسد و در نتیجه، زمان بارگذاری صفحه کاهش یابد و تجربه کاربران بهبود پیدا کند.
IP masking
زمانی که ترافیک ورودی شما از سرور پروکسی عبور داده میشود، ابتدا اتصالات توسط پروکسی خاتمه مییابند و سپس با سرور Backend باز میشوند. از دیدگاه کاربران شما، درخواستهای آنها از طریق IP پروکسی پاسخ داده میشود. در نتیجه، آدرس IP سرور اصلی شما پوشانده میشود. این امر دسترسی مهاجمان و حملات Direct-to-IP را دشوار میکند.
متعادل سازی بار
از آنجایی که Reverse Proxy دروازه بین کاربران و سرور اصلی برنامه شما است، میتواند تعیین کند که جلسات HTTP به کجا هدایت شوند. برای برنامههایی که از چندین سرور Backend استفاده میکنند، این یعنی Reverse Proxy میتواند بار را به طور موثر توزیع کند. در نتیجه، تجربه کلی کاربر را بهبود میبخشد.
پیکربندی NginX به عنوان Reverse Proxy
برای پیکربندی Nginx به عنوان Reverse Proxy باید مراحل زیر را طی کنید:
۱.نصب Nginx
برای شروع، از طریق SSH به ترمینال سرور خود دسترسی پیدا کنید. سپس از دستور apt-get برای بهروزرسانی لیست بستههای توزیع و نصب وب سرور Nginx استفاده کنید.
sudo apt update sudo apt install nginx
۲. Nginx را برای درخواستهای پروکسی پیکربندی کنید
در مرحله بعد، باید Nginx را برای درخواستهای پروکسی دامنههای میزبانی شده در Apache پیکربندی کنید. برای انجام این کار، یک فایل میزبان مجازی جدید ایجاد کنید. من در اینجا از nano editor برای اضافه کردن کد استفاده میکنم، اما شما میتوانید از ویرایشگر کد دلخواه خود استفاده کنید.
sudo nano /etc/nginx/sites-available/example.com.conf
سپس دستورات Nginx را تنظیم کنید تا با افزودن server {…} و بلاکهای location زیر، درخواستها را به Apache ارسال کند:
server { listen 80; server_name example.com www.example.com; index index.php; root /var/www/example.com/public # fallback for index.php location / { try_files $uri $uri/ /index.php?$query_string; }location /blog { proxy_pass http://blog.domain.com;proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; # Proxy headers proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; # Proxy timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; }
در کد بالا، من یک لینک سابدایرکتوری example.com/blog تعریف میکنم که توسط سرور Apache ارائه خواهد شد. مطمئن شوید که از آدرس IP عمومی (یا URL) وب سایت خود در دستورالعمل proxy_pass استفاده میکنید. برای من، وب سایت پروکسی شده در زیردامنه blog.domain.com میزبانی میشود.
نکته: قبل از ایجاد هرگونه تغییر، مطمئن شوید که وب سایت پروکسی شده، نصب و آماده سرویس دهی است.
۳. فایل میزبان مجازی ایجاد شده را ذخیره کنید
طبق دستور زیر هاست مجازی جدید را با ایجاد یک Symlink برای فایلهای example.com.conf در هر دو دایرکتوری / /etc/nginx/sites-available و / /etc/nginx/sites-enabled فعال کنید.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
۴. Nginx را تست کنید
اکنون میتوانید Nginx را برای شناسایی خطاهای پیکربندی تست کنید. برای این کار دستور زیر را اجرا کنید:
sudo nginx -t
اگر خطایی وجود ندارد با دستور زیر Nginx را Reload کنید تا تغییرات اعمال شود.
sudo systemctl reload nginx
اکنون Nginx را با موفقیت پیکربندی کردید تا به عنوان Proxy Server عمل کند. برای تایید این موضوع، میتوانید از تابع phpinfo() برای بررسی متغیرهای PHP که هنگام بازدید از سایت پروکسی خود بارگذاری میشوند، استفاده کنید.
در قسمت پایینی متغیرهای SERVER_SOFTWARE و DOCUMENT_ROOT میتوانید ببینید که Apache این دامنه را در backend ارائه میکند. اما متغیرهای HTTP_X_REAL_IP و HTTP_X_FORWARDED_FOR تایید میکنند که Nginx به عنوان یک پروکسی معکوس برای ارسال درخواستها استفاده میشود.
پیکربندی Apache به عنوان Reverse Proxy
برای پیکربندی Apache به عنوان Reverse Proxy باید مراحل زیر را طی کنید:
۱. شروع به پیکربندی Apache کنید
میتوانید طبق دستور زیر این کار را با باز کردن ترمینال سرور خود از طریق SSH و فعال کردن ماژول پروکسی Apache انجام دهید.
sudo a2enmod proxy proxy_http ssl
اجرای دستور بالا به احتمال زیاد Apache را مجددا راهاندازی میکند تا دستورالعملهای جدید را Reload کند.
۲. یک پروکسی معکوس ایجاد کنید
در این مرحله فایل میزبان مجازی سرور اصلی خود را برای ایجاد یک پروکسی معکوس ویرایش کنید. برای انجام این کار کد زیر را وارد کنید:
<VirtualHost *> DocumentRoot /var/www/app/public SSLProxyEngine On ProxyRequests off ProxyPass /blog http://blog.domain.com ProxyPassReverse /blog http://blog.domain.com </VirtualHost>
دستورالعمل ProxyPass یک پروکسی معکوس برای مسیرهای مشخص شده ایجاد میکند. در حالی که دستورالعمل ProxyPassReverse هدرهای پاسخ HTTP ارسال شده از طریق این پروکسی معکوس را رهگیری میکند و آنها را برای مطابقت با سرور Apache بازنویسی میکند.
۳. فایل wp-config.php خود را ویرایش کنید
پس از ذخیره فایل، باید فایل wp-config.php خود را با اضافه کردن کد زیر ویرایش کنید:
# ProxyPass Settings # overrides the variables below to ensure that any # request to /blog/* subdirectory is taken care of properly $_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI']; $_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME']; $_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];
۴.دیتابیس سایت وردپرس خود را آپدیت کنید
در نهایت، باید دیتابیس سایت وردپرس خود را آپدیت کنید. میتوانید این کار را با اجرای SQL کوئری زیر انجام دهید:
UPDATE wp_options SET option_value = 'https://www.example.com/blog' WHERE option_name IN( 'siteurl', 'home' );
محدودیتهای Reverse Proxy چیست؟
پس از اینکه با مزایای پروکسی معکوس آشنا شدیم، در این بخش توضیح میدهیم که محدودیتهای Reverse Proxy چیست.
- نبود امنیت در منابع مدیریت نشده: اگر کاربر نیاز به دسترسی ایمن به برنامه یا منبعی داشته باشد که با SSO شما یکپارچه نشده باشد، پروکسی معکوس نمیتواند امنیت آن را تضمین کند. پروکسیهای معکوس فقط ترافیکی که به یک مقصد مشخص ارسال میشود را مدیریت میکنند. برای تامین امنیت ترافیک عبوری از سایر منابع، به پروکسی Forward نیاز دارید.
- خطر خرابیهای مکرر: پروکسیهای معکوس معمولا Hardcoded میشوند تا با نسخههای منحصربهفرد برنامهها سازگاری پیدا کنند. بنابراین، وقتی یک برنامه بهروزرسانی میشود و کد جدیدی به پروکسی ارسال میشود، ممکن است خراب شود. این میتواند برنامه بهروزرسانیشده را تا زمانی که پروکسی دوباره رمزگذاری نشده، از دسترس خارج کند، که منجر به ناامیدی کاربران و از دست دادن بهرهوری میشود.
جمع بندی
در این مطلب دانستیم که Reverse Proxy چیست. در پاسخ این سوال توضیح دادیم که ابزار همه کارهای است که میتواند برای بهبود عملکرد و امنیت برنامههای وب مورداستفاده قرار بگیرد. از آنها در سناریوهای مختلفی از جمله شبکههای توزیع محتوا (CDN)، تعادل بار، امنیت، SSL termination، توسعه اپلیکیشن و میکروسرویسها استفاده میشود.