وقتی کاربری از شهری دیگر یا کشوری دیگر سایت شما را باز میکند، هر فایل باید مسیر طولانی تا سرور شما را طی کند. CDN یا شبکه توزیع محتوا این مسیر را کوتاه میکند. در این مقاله توضیح میدهیم CDN چیست، چطور کار میکند، چه مزایا و محدودیتهایی دارد و آیا سرور مجازی شما به CDN نیاز دارد یا نه؛ همراه با نکات اتصال درست CDN به VPS.
فهرست مطالب
CDN چیست؟
CDN (Content Delivery Network) شبکهای از سرورهای پراکنده در نقاط مختلف (به نام PoP یا سرورهای لبه) است که یک نسخه از محتوای سایت شما را نگه میدارند و آن را از نزدیکترین نقطه به هر کاربر تحویل میدهند. سرور اصلی شما (Origin) همچنان منبع اصلی محتواست، اما بیشتر درخواستها دیگر به آن نمیرسند.
CDN چطور کار میکند؟
- رکورد DNS دامنه به CDN اشاره میکند، نه مستقیماً به سرور شما.
- درخواست کاربر به نزدیکترین سرور لبه CDN میرسد.
- اگر فایل در کش آن سرور باشد (Cache Hit)، همانجا تحویل داده میشود.
- اگر نباشد (Cache Miss)، سرور لبه آن را از سرور اصلی میگیرد، به کاربر میدهد و برای درخواستهای بعدی نگه میدارد.
علاوه بر کش، اتصالهای TCP و TLS کاربر در نزدیکترین نقطه برقرار میشوند که خودش تأخیر را کاهش میدهد. اثر تأخیر بر سرعت را در Ping و Latency چیست توضیح دادهایم.
مزایای CDN
- سرعت بیشتر: کاهش تأخیر برای کاربران دور از سرور و بهبود LCP و دیگر معیارهای Core Web Vitals.
- کاهش بار سرور: تصاویر، CSS، JS و حتی صفحات کششده از CDN تحویل داده میشوند و CPU و پهنای باند سرور آزاد میماند.
- کاهش مصرف ترافیک سرور: بخش بزرگی از ترافیک خروجی از CDN عبور میکند. تفاوت ترافیک و پهنای باند در Bandwidth و Traffic.
- حفاظت در برابر حملات: بیشتر CDNها WAF و حفاظت DDoS دارند و IP واقعی سرور را پنهان میکنند. انواع حملات در حمله DDoS چیست.
- تحمل جهش ترافیک: کمپینها و اوج بازدید بهتر مدیریت میشوند.
- قابلیتهای جانبی: بهینهسازی خودکار تصاویر، HTTP/۳ و گواهی SSL.
محدودیتها و نکات
- محتوای پویا: صفحات شخصیسازیشده، سبد خرید، پنل کاربری و APIها معمولاً کش نمیشوند و همچنان به سرور میرسند.
- کش اشتباه: اگر قوانین کش درست تنظیم نشود، ممکن است محتوای قدیمی یا حتی صفحه شخصی یک کاربر به کاربر دیگر نمایش داده شود.
- پیچیدگی رفع اشکال: یک لایه دیگر بین کاربر و سرور اضافه میشود.
- IP کاربران: سرور اصلی IP سرورهای CDN را میبیند، مگر اینکه IP واقعی را از هدرهای CDN بخواند.
- محل نقاط حضور: برای مخاطب ایرانی، CDNی که نقاط حضور داخل کشور دارد، نتیجه بهتری میدهد.
آیا VPS شما به CDN نیاز دارد؟
| وضعیت | نیاز به CDN |
|---|---|
| سایت با مخاطب پراکنده در شهرها یا کشورهای مختلف | بله |
| سایت با تصاویر، ویدیو یا فایلهای دانلودی زیاد | بله |
| سایتی که هدف حمله قرار میگیرد | بله، برای حفاظت و پنهان کردن IP |
| فروشگاه با کمپینهای پرترافیک | بله |
| سایت کوچک با مخاطب نزدیک به سرور | اختیاری؛ کش سرور معمولاً کافی است |
| API داخلی، پنل مدیریتی یا سرویس بین سرورها | معمولاً خیر |
اتصال CDN به VPS
- دامنه را در CDN اضافه کنید و رکوردهای DNS را منتقل یا سرورهای نام را تغییر دهید. با مفاهیم DNS در DNS چیست آشنا شوید.
- رکورد A دامنه را در CDN به IP سرور اشاره دهید و حالت پروکسی (عبور از CDN) را فعال کنید.
- SSL را در هر دو بخش تنظیم کنید: بین کاربر و CDN و بین CDN و سرور. حالت امن کامل (Full/Strict) را با گواهی معتبر روی سرور انتخاب کنید. نصب گواهی در SSL چیست.
- IP واقعی کاربران را بازیابی کنید: در Nginx با ماژول
real_ipو فهرست IPهای CDN، تا لاگها، محدودیت نرخ و ابزارهایی مثل Fail2ban IP واقعی را ببینند. - دسترسی مستقیم را ببندید: پورتهای ۸۰ و ۴۴۳ سرور را فقط برای محدوده IPهای CDN باز کنید تا مهاجم نتواند CDN را دور بزند.
- مطمئن شوید رکوردهای دیگر، مثل زیردامنه mail، IP واقعی سرور را فاش نمیکنند.
تنظیم درست کش
- فایلهای ثابت (تصاویر، CSS، JS، فونت) را با زمان کش طولانی تنظیم کنید و برای تغییر آنها از نسخهگذاری در نام فایل استفاده کنید.
- صفحات HTML عمومی را با زمان کش کوتاه کش کنید و هنگام انتشار محتوای جدید، کش را پاک کنید.
- مسیرهای ورود، پنل مدیریت، سبد خرید و هر صفحه دارای کوکی نشست کاربر را از کش مستثنی کنید.
- هدرهای
Cache-Controlرا در سرور درست تنظیم کنید تا CDN و مرورگر رفتار یکسانی داشته باشند.
کش سمت سرور و بهینهسازیهای دیگر وردپرس را در افزایش سرعت وردپرس ببینید.
سوالات متداول
آیا CDN محتوای پویا را هم کش میکند؟
بهطور پیشفرض نه؛ فقط فایلهای ثابت. با قوانین پیشرفته میتوان صفحات HTML عمومی را هم کش کرد، اما صفحات شخصیسازیشده باید از کش مستثنی شوند.
آیا با وجود CDN به سرور قوی نیاز ندارم؟
CDN بار سرور را کم میکند، اما درخواستهای پویا، پنلها و دیتابیس همچنان روی سرور اجرا میشوند. سرور باید برای این بخش منابع کافی داشته باشد.
آیا CDN روی سئو اثر دارد؟
بهطور غیرمستقیم بله، از طریق بهبود سرعت و Core Web Vitals و دسترسپذیری بهتر. CDN بهتنهایی رتبه را تضمین نمیکند.
چرا بعد از فعال کردن CDN خطای Too many redirects میگیرم؟
معمولاً حالت SSL در CDN روی «Flexible» است و سرور هم درخواستها را به HTTPS ریدایرکت میکند و یک حلقه ایجاد میشود. حالت SSL را روی Full با گواهی معتبر روی سرور تنظیم کنید.
سرور سریع پشت CDN
سرورهای مجازی تراست هاست را بهعنوان سرور اصلی پشت CDN استفاده کنید؛ برای حفاظت پیشرفتهتر هم خدمات امنیت شبکه و WAF در دسترس است.