رفع مشکل

سایت بعد از اتصال CDN باز نمی‌شود؛ چک‌لیست کامل رفع مشکل

تهیه: کلودیفای (نگارش با کمک هوش مصنوعی) · انتشار: · زمان مطالعه: ۴ دقیقه

CDNرفع مشکلسایت بعد از اتصال CDNباز نمی‌شود؛ چک‌لیستکامل رفع مشکلمجلهٔ کلودیفایclodify.net/blog
پاسخ کوتاه

اگر سایت پس از اتصال به CDN باز نمی‌شود، به ترتیب این‌ها را بررسی کنید: ۱) رکورد DNS درست به CDN اشاره می‌کند و منتشر شده است، ۲) وضعیت دامنه در پنل CDN «فعال» است، ۳) سرور مبدأ مستقیم و بدون CDN درست پاسخ می‌دهد، ۴) پورت و پروتکل بین CDN و مبدأ درست تنظیم شده، ۵) ریدایرکت‌های HTTP/HTTPS حلقه نمی‌سازند، ۶) فایروال مبدأ درخواست‌های لبه را مسدود نکرده است. بیشتر مشکلات در یکی از همین شش مورد است.

ابتدا: پیام خطا چیست؟

آنچه می‌بینید احتمالاً کجاست
DNS_PROBE / سایت پیدا نشد رکورد DNS
خطای گواهی (NET::ERR_CERT…) دامنه هنوز فعال نشده یا SSL
ERR_TOO_MANY_REDIRECTS تنظیم ریدایرکت HTTPS
502 / 504 / 52x ارتباط CDN با سرور مبدأ — راهنمای خطاهای 5xx
403 فایروال یا محدودیت روی مبدأ
صفحهٔ قدیمی کش CDN یا مرورگر
۱۲۳کاربرDNSCNAME درست؟لبهٔ CDNSSL و ریدایرکتمبدأپورت و فایروال۱۲۳کاربرDNSCNAME درست؟لبهٔ CDNSSL و ریدایرکتمبدأپورت و فایروال
شکل ۱ خطا در یکی از سه حلقه رخ می‌دهد: DNS، لبهٔ CDN یا سرور مبدأ؛ عیب‌یابی را به همین ترتیب جلو ببرید.

گام ۱: DNS

dig +short cdn.example.com CNAME
dig +short cdn.example.com
  • خروجی دستور اول باید ساب‌دامین اختصاصی CDN شما باشد.
  • اگر خالی است یا آی‌پی سرور خودتان را نشان می‌دهد، رکورد درست ثبت یا منتشر نشده است؛ TTL و Propagation را بخوانید.
  • رکورد A یا AAAA هم‌نام با CNAME نباید وجود داشته باشد.
  • در Cloudflare، Proxy باید روی DNS only باشد.

گام ۲: وضعیت دامنه در پنل CDN

در کلودیفای از «مدیریت سرویس‌ها ← دامنهٔ اختصاصی» وضعیت دامنه را ببینید. تا وقتی «فعال» نشده، گواهی TLS برای آن صادر نشده و اتصال با خطای گواهی روبه‌رو می‌شود. در این فاصله از ساب‌دامین اختصاصی خود CDN استفاده کنید. راهنمای کامل: اتصال دامنه به CDN.

گام ۳: سرور مبدأ بدون CDN سالم است؟

از یک سیستم دیگر یا خود سرور، مبدأ را مستقیم تست کنید:

# روی خود سرور مبدأ
curl -I http://127.0.0.1:PORT/

# از بیرون، مستقیم به آی‌پی مبدأ با Host دامنه
curl -I -H "Host: cdn.example.com" http://ORIGIN_IP:PORT/

اگر مبدأ مستقیم هم پاسخ نمی‌دهد، مشکل از CDN نیست: سرویس وب، پورت یا اپلیکیشن را بررسی کنید (systemctl status nginx، ss -tlnp).

root@server: ~
$ curl -sv --resolve example.com:443:203.0.113.10 https://example.com/ -o /dev/null* Connected to example.com (203.0.113.10) port 443< HTTP/2 200$ 
شکل ۲ با --resolve درخواست را مستقیم به آی‌پی مبدأ بفرستید تا مطمئن شوید مشکل از خود سرور نیست (آی‌پی نمونه است).

گام ۴: پورت و پروتکل بین CDN و مبدأ

  • آدرس و پورتی که در پنل CDN برای مبدأ ثبت کرده‌اید باید دقیقاً همان باشد که سرویس روی آن گوش می‌دهد.
  • اگر سرویس روی 127.0.0.1 گوش می‌دهد، از بیرون (و از CDN) در دسترس نیست؛ باید روی آی‌پی عمومی یا 0.0.0.0 گوش دهد (و با فایروال محافظت شود).
  • اگر سرویس بلادرنگ دارید (WebSocket)، مطمئن شوید مسیر و هدرهای Upgrade در وب‌سرور مبدأ درست تنظیم شده است.

گام ۵: ریدایرکت و SSL

خطای «Too many redirects» معمولاً وقتی رخ می‌دهد که:

  • CDN با HTTP به مبدأ وصل می‌شود و مبدأ هر درخواست HTTP را به HTTPS ریدایرکت می‌کند؛ کاربر دوباره به CDN می‌رسد و چرخه تکرار می‌شود.
  • افزونه‌ها یا تنظیمات CMS (مثلاً آدرس سایت در وردپرس) با پروتکل واقعی هماهنگ نیستند.

راه‌حل: یا ریدایرکت HTTPS را فقط در یک لایه انجام دهید، یا در مبدأ بر اساس هدر X-Forwarded-Proto تصمیم بگیرید.

گام ۶: فایروال و محدودیت‌ها روی مبدأ

  • فایروال (UFW، iptables، فایروال پنل ارائه‌دهنده) باید اجازهٔ ورود درخواست‌ها روی پورت مبدأ را بدهد.
  • ابزارهایی مثل Fail2ban یا محدودکنندهٔ نرخ ممکن است آی‌پی لبه‌ها را — که تعداد زیادی درخواست از طرف کاربران ارسال می‌کنند — مسدود کنند.
  • برای دیدن آی‌پی واقعی کاربر در لاگ‌ها، هدرهای ارسالی CDN (مانند X-Forwarded-For) را در وب‌سرور پیکربندی کنید.

گام ۷: کش

اگر سایت باز می‌شود اما نسخهٔ قدیمی را نشان می‌دهد:

  • کش مرورگر را با Ctrl+Shift+R یا پنجرهٔ ناشناس دور بزنید.
  • هدرهای Cache-Control مبدأ را بررسی کنید: curl -I https://cdn.example.com/page.
  • مفهوم کش و TTL را در کش (Cache) چیست؟ بخوانید.

جمع‌بندی در یک جدول

# بررسی ابزار
۱ CNAME درست و منتشر شده dig
۲ دامنه در پنل «فعال» پنل CDN
۳ مبدأ مستقیم سالم curl -I روی مبدأ
۴ پورت/آدرس مبدأ درست ss -tlnp، پنل CDN
۵ بدون حلقهٔ ریدایرکت curl -IL
۶ فایروال مبدأ باز ufw status، لاگ‌ها
۷ کش curl -I، پنجرهٔ ناشناس

چه اطلاعاتی برای پشتیبانی بفرستیم؟

دامنه یا ساب‌دامین، زمان دقیق خطا، متن یا کد خطا، خروجی dig و curl -I از سمت خودتان و نتیجهٔ تست مستقیم مبدأ. با این اطلاعات بررسی بسیار سریع‌تر انجام می‌شود.

سؤالات متداول

قبل از اتصال CDN سایت کار می‌کرد؛ چرا حالا نه؟

معمولاً به‌دلیل تفاوت پورت/پروتکل بین CDN و مبدأ، ریدایرکت HTTPS یا فایروالی که درخواست لبه‌ها را مسدود می‌کند.

چطور موقتاً CDN را دور بزنم؟

رکورد DNS را به آی‌پی مبدأ برگردانید (با TTL کوتاه)، یا برای تست شخصی، دامنه را در فایل hosts به آی‌پی مبدأ ببرید.

هزینهٔ CDN در زمان خطا هم کسر می‌شود؟

هزینه بر اساس ترافیک دانلود واقعی محاسبه می‌شود؛ مصرف را می‌توانید در «مدیریت سرویس‌ها» ببینید.

موجودی‌ام تمام شده بود؛ ربطی دارد؟

بله؛ با اتمام موجودی، CDN موقتاً متوقف می‌شود و پس از شارژ حداکثر ظرف ۵ دقیقه دوباره فعال می‌شود.

آماده‌اید؟ سرورتان را بسازید.

از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی

سرورتان را همین حالا بسازید.

ساعتی بپردازید. هر وقت خواستید حذف کنید.