یکی از مواردی که معمولا باعث ایجاد مشکل در زیرساخت میشود ، بحث تحریم برخی از سرویس ها علیه کاربران ایرانی است . برای رفع این مشکل می توان از سرویس هایی مثل HTTP Proxy ، VPN و سرویس های مشابه استفاده کرد که علاوه بر تحریم ها بحث فیلترینگ رو را دور میزنند . اما راه دیگری که وجود داره راه اندازی سرویس Reverse Proxy است .
به این صورت که درخواست های شما به سرویس Reverse Proxy که در خارج از ایران قرار دارد زده می شود و ترافیک شما به سمت مقصد مورد نظر با IP سرور خارجی برقرار می شود ( در اصل عملیات Proxy Pass صورت میگیرد ) . این سرویس را میتوان با وب سرور ها مانند Nginx پیاده سازی کرد اما برای راه اندازی سرویس Nginx نیاز است شما یک VPS یا Iaas داشته باشید .
پیشنهاد من استفاده از Worker های CloudFlare است . این سرویس به شما اجازه میدهد کدهای Javascript خود را در صدها سرور Cloudflare اجرا کنین . پلن رایگان این سرویس به شما اجازه دریافت ۱۰۰.۰۰۰ درخواست روزانه را میدهد .
اطلاعات بیشتر این سرویس را در https://workers.cloudflare.com مشاهده کنید .
همچنین در این صفحه https://developers.cloudflare.com/workers/examples میتوانید یکسری نمونه کد Javascript که قابل اجرا بر Worker ها هستن را مشاهده کنید .
با استفاده از این کد Javascript یک سرویس Proxy راه اندازی میشود :
async function handleRequest(request) { const host = request.headers.get('x-host') if(!host)return fetch("https://http.cat/400"); const url = new URL(request.url) url.hostname = host; return fetch(url.toString(), request) } addEventListener("fetch", event => { event.respondWith(handleRequest(event.request)) })
تست درخواست به سرویس :
curl 'https://proxy-01.sahand-habibi1990.workers.dev/contact.html' --header 'x-host: www.zarinpal.com'
بعد از راه اندازی هر worker به شما url شبیه proxy-01.sahand-habibi1990.workers.dev داده میشود . میتوانید این url را در قسمت add route با domain خودتان custom کنید که نیاز است یک رکورد CNAME تعریف کنید و domain مورد نظر را به worker اختصاص دهید .