در این پست قصد دارم با شما به اشتراک بگذارم چگونه می توانید کوتاه کننده URL دامنه سفارشی خود را با استفاده از Cloudflare Workers ایجاد کنید. چه یک توسعهدهنده وب باشید که به دنبال اضافه کردن ابزار دیگری به کمربند خود هستید، چه صاحب کسبوکاری که میخواهد لینکهای شما را بدون برچسب قیمت گزاف علامتگذاری کند، یا فقط کسی که دوست دارد با فناوریهای وب دستکاری کند، این راهنمای گام به گام برای شما مناسب است. شما
به عنوان یک توسعهدهنده وب و علاقهمند به فناوری، من همیشه مجذوب چیزهای کوچکی هستم که اینترنت را کارآمدتر و کاربرپسندتر میکند. یک روز، در حالی که یک URL طولانی و سخت را با یک همکار به اشتراک می گذاشتم، متوجه شدم که آرزوی یک راه ساده و شخصی برای کوتاه کردن پیوندها را دارم. مطمئناً، تعداد زیادی خدمات کوتاهکننده URL وجود دارد، اما من چیزی میخواستم که بیشتر احساس «من» داشته باشد – چیزی که بتوانم آن را سفارشیسازی و کنترل کنم.
این زمانی بود که به طور تصادفی به ایده ایجاد کوتاه کننده URL سفارشی خود با استفاده از Cloudflare Workers رسیدم. مانند یافتن گنجی پنهان در دریای وسیع فناوری های وب بود. نه تنها میتوانستم URLها را کوتاه کنم، بلکه میتوانم این کار را با نام دامنه خودم، به صورت رایگان انجام دهم! هیجان این کشف من را به یاد اولین باری که یک وب سایت را راه اندازی کردم - آن عجله توانمندسازی و امکانات بی پایان بود.
چیزی که این کشف را هیجانانگیزتر کرد این بود که میتوانست به عنوان یک جایگزین فوقالعاده و رایگان برای سرویسهای محبوبی مانند Bit.ly یا TinyURL برای ایجاد لینکهای کوتاه برند در یک دامنه سفارشی عمل کند. بسیاری از مشاغل و افراد برای این نوع عملکرد پول خوبی می پردازند، اما در اینجا راهی برای دستیابی به همان نتیجه بدون صرف یک سکه وجود دارد.
مرحله 1: ثبت نام دامنه (از یک دامنه کوتاه استفاده کنید)
اولین قدم در ایجاد کوتاه کننده URL سفارشی، ثبت نام دامنه است. این پایه و اساس پیوندهای کوتاه برند شما خواهد بود، پس عاقلانه انتخاب کنید!
در اینجا چند نکته وجود دارد که به شما در انتخاب دامنه مناسب کمک می کند:
- کوتاهش کن: تمام هدف کوتاه کننده URL ایجاد پیوندهای مختصر است. در صورت امکان به دنبال نام های دامنه با 3-5 کاراکتر بگردید. این می تواند مخفف، مخفف یا کلمه ای جذاب باشد.
- آن را به یاد ماندنی کنید: چیزی را برای به خاطر سپردن و تایپ آسان انتخاب کنید. این کار استفاده از لینک های کوتاه شده را برای شما و دیگران آسان تر می کند.
- برند خود را در نظر بگیرید: اگر از این برای یک برند تجاری یا شخصی استفاده میکنید، سعی کنید دامنه را با هویت برند موجود خود هماهنگ کنید.
- بررسی در دسترس بودن: دامنه های کوتاه و جذاب تقاضای زیادی دارند. اگر انتخاب اول شما در دسترس نیست، ممکن است لازم باشد خلاق باشید یا دامنههای سطح بالای جایگزین (TLD) مانند .io، .co، یا .me را در نظر بگیرید.
- به TLD فکر کنید: در حالی که .com محبوب است، از TLD های دیگر دوری نکنید. برخی از آنها، مانند .link یا .click، می توانند به ویژه برای کوتاه کننده URL مناسب باشند.
در اینجا چند مثال برای الهام بخشیدن به شما آورده شده است:
- abc.link
- go.io
- shrt.co
- zap.me
هنگامی که دامنه خود را انتخاب کردید، باید آن را از یک ثبت کننده دامنه خریداری کنید. برخی از گزینه های محبوب عبارتند از:
- Namecheap
- نیک
- CloudFlare را (توصیه می شود - که همچنین بسیار راحت است زیرا ما از Cloudflare Workers استفاده خواهیم کرد)
به یاد داشته باشید، در حالی که دامنه هزینه دارد، یک بار خرید در سال است، و بقیه راه اندازی کوتاه کننده URL ما با استفاده از Cloudflare Workers رایگان خواهد بود.
نکته حرفه ای: قبل از نهایی کردن خرید خود، مطمئن شوید که دامنه با هرزنامه یا فعالیت مخرب مرتبط نیست. می توانید تاریخچه آن را با استفاده از ابزارهایی مانند Domain Tools یا Wayback Machine بررسی کنید.
با در دست داشتن دامنه جدید درخشان خود، آماده رفتن به مرحله بعدی هستید: راه اندازی Cloudflare برای دامنه خود. اما در بخش بعدی به آن خواهیم پرداخت.
مرحله 2: رکوردهای DNS را برای دامنه خود پیکربندی کنید
اکنون که دامنه خود را دارید، زمان آن رسیده است که پیکربندی DNS را تنظیم کنید. این مرحله برای اطمینان از عملکرد صحیح Cloudflare Workers شما با دامنه تازه ثبت شده شما بسیار مهم است.
بیایید روند را طی کنیم:
1. دامنه خود را به Cloudflare اضافه کنید
- اگر قبلا این کار را نکرده اید، یک حساب کاربری رایگان در Cloudflare ایجاد کنید.
- در داشبورد Cloudflare خود، روی «افزودن سایت» کلیک کنید و نام دامنه خود را وارد کنید.
- Cloudflare سوابق DNS موجود را اسکن می کند. هر رکوردی را که پیدا می کند حذف کنید (مگر اینکه از دامنه برای ایمیل یا سایر خدمات مهم نیز استفاده می کنید، در این صورت، آنها را نگه دارید).
2. سرورهای نام را به روز کنید (اگر دامنه شما با Cloudflare ثبت شده است، این مرحله را نادیده بگیرید)
- Cloudflare مجموعه ای از سرورهای نام را در اختیار شما قرار می دهد.
- به وب سایت ثبت کننده دامنه خود بروید و سرورهای نام موجود را با موارد ارائه شده توسط Cloudflare جایگزین کنید.
- انتشار جهانی این مرحله ممکن است تا 24 ساعت طول بکشد.
3. رکوردهای DNS را پیکربندی کنید
- در تنظیمات Cloudflare DNS شما، دو رکورد A جدید اضافه خواهیم کرد.
- موارد زیر را اضافه کنید:
نوع: A
نام: @
مطلب: 192.0.2.1
TTL: خودکار
وضعیت پروکسی: پروکسی شده (ابر نارنجی - بسیار مهم)
نوع: A
نام: WWW
مطلب: 192.0.2.1
TTL: خودکار
وضعیت پروکسی: پروکسی شده (ابر نارنجی - بسیار مهم)
این IP 192.0.2.1 یک آدرس ساختگی خاص است. این برای مستندسازی و آزمایش در نظر گرفته شده است، که آن را برای نیازهای ما عالی می کند.
4. Cloudflare Proxy را فعال کنید
- مطمئن شوید که وضعیت پروکسی (نماد ابر نارنجی رنگ) برای رکورد DNS شما فعال است.
- این به Cloudflare اجازه می دهد تا ترافیک شما را پروکسی کند و برای کارکرد Cloudflare Workers ضروری است.
5. بررسی تنظیمات
- هنگامی که تغییر سرور نام منتشر شد، Cloudflare دامنه شما را به عنوان "فعال" نشان می دهد.
- می توانید این را در داشبورد Cloudflare تأیید کنید.
نکته کلیدی در اینجا این است که ما دامنه شما را به میزبانی وب واقعی نشان نمی دهیم. آدرس 192.0.2.1 فقط یک مکان نگهدار است. Cloudflare Worker شما که در مرحله بعد راه اندازی می کنیم، تمام درخواست های دامنه شما را رهگیری می کند و منطق کوتاه کردن URL را مدیریت می کند.
نکته حرفه ای: این تنظیم به این معنی است که شما نیازی به پرداخت هزینه یا مدیریت هیچ میزبانی وب ندارید. کارگران Cloudflare تمام کارهای سنگین را انجام می دهند و این راه حل را نه تنها رایگان، بلکه فوق العاده سبک و نگهداری آسان می کند.
با پیکربندی صحیح DNS، اکنون آماده هستید تا به بخش هیجان انگیز بروید – راه اندازی Cloudflare Worker برای مدیریت کوتاه شدن URL.
مرحله 3: ایجاد یک Cloudflare Worker
اکنون که دامنه خود را در Cloudflare پیکربندی کردهایم، زمان آن رسیده است که Worker را ایجاد کنیم که هدایتهای ما را مدیریت میکند. Cloudflare Workers یک محیط اجرای بدون سرور را فراهم می کند که به ما امکان می دهد کد خود را در لبه، نزدیک به کاربران خود برای عملکرد بهینه اجرا کنیم.
1. یک Cloudflare Worker ایجاد کنید
- دسترسی به بخش کارگران:
- وارد داشبورد Cloudflare خود شوید.
- از نوار کناری به بخش "کارگران" بروید.
- اگر این اولین کارگر شماست، روی «ایجاد سرویس» یا اگر از قبل کارگران موجود دارید، روی «ایجاد کارگر» کلیک کنید.
- نام کارگر خود را نام ببرید:
- یک نام توصیفی برای Worker خود انتخاب کنید، مانند “bulk-redirects-handler”.
- برای رفتن به ویرایشگر، روی «ایجاد سرویس» کلیک کنید.
- نوشتن فیلمنامه کارگر:
- در ویرایشگر، کد پیش فرض را با اسکریپت کنترل کننده تغییر مسیر جایگزین کنید:
صادرات پیش فرض {
واکشی ناهمگام (درخواست) {
const redirectMap = نقشه جدید([
["google"، "https://www.google.com?subId1=google"]،
["bing"، "https://www.bing.com?subId1=bing"]،
// در صورت نیاز، تغییر مسیرهای بیشتری را در اینجا اضافه کنید
]) ؛
const url = URL new(request.url);
console.log("URL کامل:"، url.toString());
console.log("Hostname:", url.hostname);
console.log("Pathname:", url.pathname);
let path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];
if (url.hostname.includes('workers.dev')) {
path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[1] || '';
}
console.log("مسیر پردازش شده:", مسیر);
const location = redirectMap.get(path);
console.log("Redirect location:", location);
// برای تغییر مسیر دائمی به 301 تغییر دهید
اگر (مکان) {
return Response.redirect(location, 302);
}
// اگر درخواست در نقشه نیست، یک 404 یا بازگشت دلخواه خود را برگردانید
return new Response(`Not Found: ${path}`, { status: 404 });
},
};
- درک اسکریپت:
- ما تعریف a redirectMap که شامل مسیرهای کوتاه ما و URLهای کامل مربوط به آنها است.
["google"، "https://www.google.com?subId1=google"]،
yourshorturl.com/google تغییر مسیر به -> https://www.google.com?subId1=google
["bing"، "https://www.bing.com?subId1=bing"]،
yourshorturl.com/bing به -> https://www.bing.com?subId1=bing تغییر مسیر می دهد
- اسکریپت درخواست های دریافتی را پردازش می کند، مسیر را استخراج می کند و بررسی می کند که آیا با هر یک از تغییر مسیرهای تعریف شده ما مطابقت دارد یا خیر.
- اگر مطابقت پیدا شود، 302 (تغییر مسیر موقت) را به URL مربوطه برمی گرداند.
- اگر مطابقت پیدا نشد، پاسخ 404 Not Found را برمیگرداند.
- آزمایش کارگر:
- از ویژگی «ویرایش سریع» در داشبورد Cloudflare برای ایجاد تغییرات و آزمایش Worker خود استفاده کنید.
- میتوانید از ابزار تست HTTP ارائه شده برای شبیهسازی درخواستها استفاده کنید و ببینید Worker شما چگونه پاسخ میدهد.
- استقرار کارگر:
- هنگامی که از آزمایشات خود راضی شدید، روی "ذخیره و استقرار" کلیک کنید تا Worker خود را زنده کنید.
- راه اندازی مسیرهای کارگری:
- پس از استقرار، به برگه «Triggers» برای Worker خود بروید.
- مسیری را اضافه کنید که با دامنه شما مطابقت دارد، مانند *recommends.link/*.
- این تضمین می کند که تمام درخواست های دامنه شما توسط این Worker رسیدگی می شود.
- تأیید تنظیمات:
- سعی کنید به تعدادی از مسیرهای تغییر مسیر خود دسترسی داشته باشید (مثلاً https://recommends.link/url-shortener-guide) برای اطمینان از اینکه آنها مطابق انتظار کار می کنند.
- Workers Logs را در داشبورد Cloudflare خود بررسی کنید تا خروجی کنسول را ببینید و بررسی کنید که مسیرها به درستی پردازش می شوند.
مرحله 4: سفارشی سازی های بیشتر (اختیاری)
تغییر مسیرهای پویا با Cloudflare KV
برای اینکه سیستم تغییر مسیر خود را انعطافپذیرتر و مدیریت آن آسانتر کنیم، میتوانیم از فضای ذخیرهسازی Cloudflare KV (Key-Value) برای ذخیره هدایتهای خود استفاده کنیم:
یک فضای نام KV ایجاد کنید:
- در داشبورد Cloudflare خود، به Workers > KV بروید. روی «Create namespace» کلیک کنید و نام آن را بگذارید (به عنوان مثال، «REDIRECT_MAP»).
- به تنظیمات Worker's خود بروید. در بخش "KV Namespace Bindings"، یک اتصال جدید اضافه کنید. فضای نام KV خود را انتخاب کنید و یک نام متغیر به آن بدهید (مثلاً ReDIRECTS).
صادرات پیش فرض {
واکشی غیر همگام (درخواست، env) {
const url = URL new(request.url);
const path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];
const location = await env.REDIRECTS.get(path);
اگر (مکان) {
return Response.redirect(location, 301);
}
return new Response(`Not Found: ${path}`, { status: 404 });
},
};
اکنون میتوانید با تغییر در فروشگاه KV بدون تغییر کد Worker، تغییر مسیرها را اضافه، بهروزرسانی یا حذف کنید.
تغییر مسیرهای پارامتری شده
به پارامترهای پویا در تغییر مسیرهای خود اجازه دهید:
صادرات پیش فرض {
واکشی غیر همگام (درخواست، env) {
const url = URL new(request.url);
const [path, ...params] = url.pathname.toLowerCase().replace(/^\//, '').split('/');
let location = await env.REDIRECTS.get(path);
اگر (مکان) {
// متغیرهایی را با پارامترهای واقعی جایگزین کنید
params.forEach((param, index) => {
location = location.replace(`{${index}}`، param);
})؛
return Response.redirect(location, 301);
}
return new Response(`Not Found: ${path}`, { status: 404 });
},
};
با این تنظیم، میتوانید یک ورودی KV مانند «product» داشته باشید: «https://mystore.com/item/{0}/details» و از آن به عنوان yourshortlink.com/product/12345.
روی Tracking and Analytics کلیک کنید
با ثبت رویدادهای تغییر مسیر، تجزیه و تحلیل اولیه را پیاده سازی کنید:
صادرات پیش فرض {
واکشی غیر همگام (درخواست، env) {
const url = URL new(request.url);
const path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];
const location = await env.REDIRECTS.get(path);
اگر (مکان) {
// رویداد تغییر مسیر را ثبت کنید
await env.REDIRECTS.put(`${path}_clicks`, (parseInt(await env.REDIRECTS.get(`${path}_clicks`) || '0') + 1).toString());
return Response.redirect(location, 301);
}
return new Response(`Not Found: ${path}`, { status: 404 });
},
};
صفحات خطای سفارشی
به جای یک پاسخ متنی ساده 404، یک صفحه HTML سفارشی را برگردانید:
const notFoundPage = `
پیوند یافت نشد
body { font-family: Arial, sans-serif; text-align: center; padding-top: 50px; }
اوه! پیوند یافت نشد
پیوند کوتاهی که به دنبال آن هستید وجود ندارد.
`;
// در تابع واکشی شما:
بازگرداندن پاسخ جدید (notFoundPage, {
وضعیت: 404،
سرصفحه ها: { 'Content-Type': 'text/html' }
})؛
محدودکردن سرعت
اجرای محدودیت نرخ پایه برای جلوگیری از سوء استفاده:
صادرات پیش فرض {
واکشی غیر همگام (درخواست، env) {
const ip = request.headers.get('CF-Connecting-IP');
const rateLimitKey = `ratelimit:${ip}`;
const currentRequests = parseInt(await env.REDIRECTS.get(rateLimitKey) || '0');
if (currentRequests > 100) { // 100 درخواست در دقیقه محدودیت
return new Response('Rate limit overed', { status: 429 });
}
await env.REDIRECTS.put(rateLimitKey, (currentRequests + 1).toString(), {expirationTtl: 60});
// بقیه منطق تغییر مسیر شما اینجاست
},
};
تست A / B
آزمایش ساده A/B را برای تغییر مسیرهای خود اجرا کنید:
صادرات پیش فرض {
واکشی غیر همگام (درخواست، env) {
const url = URL new(request.url);
const path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];
const locationA = await env.REDIRECTS.get(`${path}_A`);
const locationB = await env.REDIRECTS.get(`${path}_B`);
اگر (موقعیت A && موقعیت B) {
const location = Math.random() < 0.5 ? locationA: locationB;
return Response.redirect(location, 301);
}
// اگر تست A/B تنظیم نشده باشد به تغییر مسیر عادی برگشت
const location = await env.REDIRECTS.get(path);
اگر (مکان) {
return Response.redirect(location, 301);
}
return new Response(`Not Found: ${path}`, { status: 404 });
},
};
این سفارشیسازیها و توسعهها قابلیتهای قابل توجهی را به سیستم تغییر مسیر انبوه شما اضافه میکنند و آن را انعطافپذیرتر، قدرتمندتر و آموزندهتر میکنند. هر یک از این ویژگی ها را می توان بر اساس نیازهای خاص و موارد استفاده شما، بیشتر اصلاح و گسترش داد.
خلاصه: ایجاد یک کوتاه کننده لینک سفارشی با Cloudflare Workers
در سراسر این پست وبلاگ، نحوه ایجاد یک کوتاه کننده URL سفارشی قدرتمند و انعطاف پذیر با استفاده از Cloudflare Workers را بررسی کرده ایم. این راه حل یک رویکرد رایگان و کارآمد برای ایجاد پیوندهای کوتاه در مقیاس ارائه می دهد.
TL؛ DR:
- Cloudflare Workers یک پلت فرم بدون سرور برای اجرای منطق تغییر مسیر سفارشی با توزیع جهانی و تأخیر کم ارائه می دهد.
- پیکربندی مناسب DNS و راهاندازی Worker Routes برای اتصال دامنه سفارشی شما به Worker بسیار مهم است.
- یک Worker ساده مبتنی بر جاوا اسکریپت می تواند سناریوهای تغییر مسیر پیچیده را به طور موثر اداره کند.
- ذخیره سازی کلید ارزش (KV) Cloudflare را می توان برای ایجاد نقشه های تغییر مسیر پویا و به راحتی قابل مدیریت استفاده کرد.
- ویژگیهای پیشرفتهای مانند تغییر مسیرهای پارامتری، ردیابی کلیک، صفحات خطای سفارشی، محدودیت نرخ و تست A/B را میتوان در اکوسیستم Worker پیادهسازی کرد.
- این سیستم مزایای قابل توجهی نسبت به سنتی دارد روش های تغییر مسیراز جمله بهبود عملکرد، مدیریت آسان تر، و افزایش انعطاف پذیری.
راه حلی که ما ساخته ایم چندین مزیت دارد:
- مقیاس پذیری: میلیون ها تغییر مسیر را بدون کاهش عملکرد مدیریت می کند.
- انعطاف پذیری: به راحتی بدون تغییر منطق اصلی، تغییر مسیرها را اضافه، اصلاح یا حذف کنید.
- عملکرد: از شبکه جهانی Cloudflare برای تغییر مسیرهای سریع در سراسر جهان استفاده می کند.
- سفارشی سازی: به ویژگی های پیشرفته مانند تجزیه و تحلیل و تست A/B اجازه می دهد.
- هزینه بهره وری: از معماری بدون سرور استفاده می کند که به طور بالقوه هزینه های میزبانی را کاهش می دهد.
- جایگزین رایگان به سرویس های محبوبی مانند Bit.ly یا شما برای ایجاد پیوندهای کوتاه مارک دار در یک دامنه سفارشی.
اکنون که قدرت و انعطافپذیری این سیستم تغییر مسیر مبتنی بر Cloudflare Worker را درک کردهاید، وقت آن است که آن را وارد عمل کنید:
- اگر قبلاً ثبت نام نکرده اید، برای یک حساب کاربری Cloudflare ثبت نام کنید و با پلتفرم Workers آشنا شوید.
- این سیستم را برای لینک های کوتاه مارک دار خود یا تغییر مسیرهای انبوه پیاده سازی کنید.
- ویژگیهای پیشرفتهای را که در مورد آن بحث کردیم، آزمایش کنید تا سیستم را با نیازهای خاص شما مطابقت دهید.
- تجربیات خود را به اشتراک بگذارید یا در بخش نظرات زیر سوال بپرسید. بینش شما می تواند به دیگران در جامعه کمک کند!
- برای موارد استفاده پیشرفته تر یا پیاده سازی های سفارشی، تماس با متخصص یا خدمات مشاوره Cloudflare Workers را در نظر بگیرید.
کنجکاو بمانید، به یادگیری ادامه دهید و با ابزارهایی مانند Cloudflare Workers از مرزهای ممکن عبور کنید.