خطای 521 Web Server Is Down یکی از کدهای وضعیت اختصاصی Cloudflare است که زمانی نمایش داده می‌شود که لبه‌های شبکه Cloudflare نتوانند به سرور مبدأ (Origin Server) سایت شما متصل شوند و در نتیجه، پاسخ را به بازدیدکننده برنگردانند. برخلاف تصور رایج، این خطا به‌معنای «خاموش بودن سرور شما» نیست؛ ممکن است سرور شما کاملاً فعال باشد اما لبه Cloudflare نتواند به آن وصل شود. تفاوت این دو، مسیر عیب‌یابی را کامل تغییر می‌دهد و تشخیص دقیق آن، تفاوت بین پنج دقیقه رفع و پنج ساعت کلنجار است. در این مقاله، همان مسیری را طی می‌کنم که در پروژه‌های واقعی برای ردیابی این خطا استفاده کرده‌ام — از اتصال TCP مبدأ تا تنظیمات فایروال، پورت‌ها، SSL و Nginx.

521 Web Server Is Down دقیقاً چه معنایی دارد؟

کد 521 یکی از کدهای وضعیت اختصاصی Cloudflare است و در استانداردهای رسمی HTTP وجود ندارد. این کد زمانی برگردانده می‌شود که Cloudflare، به‌عنوان لایه واسط بین بازدیدکننده و سرور شما، تلاش کرده به سرور مبدأ (Origin Server) متصل شود اما اتصال TCP برقرار نشده است. در این لحظه، Cloudflare نه پاسخ HTTP دریافت کرده و نه خطای سطح اپلیکیشن دیده — فقط اتصال شبکه به سرور شما fail شده است.

نکته کلیدی که اکثر کاربران نمی‌دانند: 521 همیشه به‌معنای خاموش بودن سرور نیست. سرور شما می‌تواند کاملاً فعال باشد و ترافیک مستقیم را دریافت کند اما Cloudflare نتواند به آن متصل شود. سه سناریوی دقیق در این زمینه:

  • سرور فعال است اما فایروال IPهای Cloudflare را مسدود کرده: این شایع‌ترین سناریوی 521 در پروژه‌های واقعی است. اگر فایروال سرور شما، IPهای Cloudflare را در لیست سیاه گذاشته باشد، هر تلاش Cloudflare برای اتصال، بلاک می‌شود و پاسخ 521 صادر می‌گردد.
  • وب‌سرور روی پورت اشتباه گوش می‌دهد: اگر Nginx یا Apache روی پورتی غیر از 80 یا 443 گوش دهند یا Cloudflare برای اتصال به پورت دیگری تنظیم شده باشد، اتصال fail می‌شود.
  • سرور به‌دلیل بار اضافه در حالت overload قرار دارد: اگر سرور شما در لحظه دریافت درخواست، تحت فشار شدید منابع است، ممکن است اتصال TCP را نپذیرد یا با تأخیر پاسخ دهد که Cloudflare آن را به‌عنوان 521 تفسیر می‌کند. این سناریو با خطای 503 در لایه Cloudflare نیز مرتبط است که در خطای 503 Service Unavailable مفصل بررسی کرده‌ام.

اگر با معماری کلی CDN و سرور آشنایی ندارید، ابتدا CDN چیست و چگونه کار می‌کند را بخوانید تا چارچوب ذهنی‌تان شکل بگیرد. مفهوم کلی سرور و اتصال شبکه هم در سرور چیست و چگونه کار می‌کند آمده است.

521 یعنی Cloudflare نمی‌تواند با سرور شما حرف بزند، اما این لزوماً به‌معنای خاموش بودن سرور نیست. در ۷۰ درصد پرونده‌ها، سرور فعال است و فقط اتصال مسدود شده.

سه لایه‌ای که باید تفکیک شوند

در تجربه من، خطای 521 همیشه در یکی از این سه لایه ریشه دارد. تفکیک لایه پیش از هر اقدام، نیمی از راه را رفته‌اید:

  • لایه شبکه و فایروال: IPهای Cloudflare مسدود شده یا مسیر شبکه بین Cloudflare و سرور شما اختلال دارد.
  • لایه وب‌سرور: Nginx یا Apache روی پورت اشتباه یا با پیکربندی نادرست در حال اجراست.
  • لایه SSL و TLS: گواهی SSL منقضی یا تنظیمات TLS ناسازگار، مانع اتصال Cloudflare می‌شود.

جدول زیر نگاشت سریع سیمپتوم به لایه خطا را نشان می‌دهد:

سیمپتوملایه احتمالیاولین اقدام تشخیصی
521 برای همه بازدیدکنندگانلایه شبکه یا فایروالتست اتصال از IP خارجی به سرور مبدأ
521 فقط در بعضی ساعاتلایه بار سرور یا Rate Limitingبررسی منابع هاست و لاگ Cloudflare
521 فقط برای بعضی صفحاتلایه وب‌سرور یا SSLبررسی پیکربندی Nginx یا Apache
521 بعد از تغییر تنظیمات SSLلایه SSL و TLSبررسی گواهی و حالت SSL در Cloudflare

تفاوت 521 با 522، 523 و 502

Cloudflare مجموعه‌ای از کدهای اختصاصی برای خطاهای اتصال به سرور مبدأ دارد و تفکیک دقیق این کدها، اولین قدم عیب‌یابی است. جدول زیر این تفاوت‌ها را نشان می‌دهد:

کدمعنامسئول خطا
521 Web Server Is Downاتصال TCP به سرور مبدأ برقرار نشدفایروال، پورت یا سرور مبدأ
522 Connection Timed Outاتصال TCP برقرار شد اما پاسخ به‌موقع نرسیدسرور مبدأ یا فایروال کند
523 Origin Is Unreachableسرور مبدأ از دید Cloudflare قابل دسترس نیستDNS، routing یا IP نادرست
502 Bad GatewayCloudflare پاسخ نامعتبر از سرور مبدأ گرفتوب‌سرور یا اپلیکیشن مبدأ

این تفکیک در عیب‌یابی حیاتی است. اگر 521 می‌گیرید، اتصال TCP fail شده؛ یعنی حتی یک هند‌شیک اولیه بین Cloudflare و سرور شما انجام نشده. اگر 522 می‌گیرید، اتصال برقرار شده اما پاسخ نرسیده؛ یعنی سرور شما در حال پردازش کند است. برای عیب‌یابی دقیق‌تر این خطاها، به ترتیب خطای 502 Bad Gateway، خطای 504 Gateway Timeout و خطای SSL سرور را بررسی کنید.

521 و 522 اغلب با هم اشتباه گرفته می‌شوند: 521 می‌گوید «نمی‌توانم وصل شوم»، 522 می‌گوید «وصل شدم اما جواب نگرفتم». یکی مشکل اتصال است، دیگری مشکل زمان.

اتصال Cloudflare به سرور مبدأ چطور کار می‌کند؟

برای فهم دقیق 521، باید بدانید Cloudflare در معماری پشت صحنه سایت شما چطور عمل می‌کند. وقتی کاربری به دامنه شما درخواست می‌زند، درخواست ابتدا به نزدیک‌ترین دیتاسنتر Cloudflare می‌رسد. Cloudflare این درخواست را با یک اتصال TCP جدید (معمولاً از یک IP داخلی Cloudflare) به سرور مبدأ شما (Origin Server) ارسال می‌کند. اگر این اتصال در بازه زمانی مشخصی برقرار نشود، پاسخ 521 به کاربر برگردانده می‌شود.

سه نکته دقیق در این لایه:

  1. Cloudflare از IPهای مشخصی وصل می‌شود: فهرست رسمی این IPها در سایت Cloudflare منتشر شده و اگر سرور شما در فایروال خود این IPها را مسدود کرده باشد، 521 رخ می‌دهد. این دقیقاً همان سناریویی است که در هاست‌های اشتراکی با فایروال تهاجمی زیاد دیده می‌شود.
  2. پورت اتصال: Cloudflare به‌طور پیش‌فرض به پورت 80 (HTTP) و 443 (HTTPS) وصل می‌شود. اگر سرور شما روی پورت دیگری listen می‌کند و Cloudflare به آن پورت تنظیم نشده، اتصال fail می‌شود.
  3. SNI و گواهی SSL: در اتصال HTTPS، Cloudflare به سرور شما SNI دامنه را ارسال می‌کند. اگر سرور شما برای این دامنه گواهی معتبر نداشته باشد یا گواهی self-signed باشد، بسته به حالت SSL تنظیم‌شده در Cloudflare، اتصال رد می‌شود. اصول کامل SSL و اتصال امن در SSL چیست و چرا سایت به آن نیاز دارد آمده است.

روش تشخیص قطعی: از یک سرور خارجی (مثل یک VPS شخصی یا ابزار آنلاین)، با curl -v --resolve yourdomain.com:443:YOUR_IP https://yourdomain.com تست کنید. اگر اتصال از خارج برقرار شود اما Cloudflare 521 بدهد، ریشه در فایروال یا IP بلاک است. اگر از خارج هم fail شود، ریشه در سرور شماست.

فایروال و مسدودسازی IPهای Cloudflare

در تجربه من، مسدودسازی IPهای Cloudflare توسط فایروال، شایع‌ترین ریشه خطای 521 است. هاست‌های اشتراکی، بعضی افزونه‌های امنیتی و بعضی تنظیمات پیش‌فرض فایروال، به‌طور ناخواسته IPهای Cloudflare را به‌عنوان «مشکوک» علامت می‌زنند و اتصال را بلاک می‌کنند. سه سناریوی دقیق:

  1. افزونه امنیتی وردپرس: بعضی افزونه‌های امنیتی مثل Wordfence، در تنظیمات خود «Country Blocking» یا «IP Blocking» دارند. اگر به‌اشتباه IPهای Cloudflare در لیست سیاه قرار گرفته باشند، هر درخواست Cloudflare بلاک می‌شود. تنظیم دقیق این لایه در افزونه‌های امنیتی وردپرس آمده است.
  2. فایروال سطح سرور: در سرورهای VPS، فایروال‌هایی مثل iptables یا UFW ممکن است قواعدی داشته باشند که IPهای Cloudflare را بلاک می‌کنند. راه‌حل: افزودن فهرست کامل IPهای Cloudflare به allowlist. راهنمای فایروال نرم‌افزاری در فایروال نرم‌افزاری در سرور آمده است.
  3. فایروال هاست اشتراکی: بعضی هاست‌های اشتراکی، قواعد امنیتی خودشان را روی فایروال اعمال می‌کنند که ممکن است به‌اشتباه IPهای Cloudflare را بلاک کنند. راه‌حل: تماس با پشتیبانی هاست و درخواست بررسی و استثنا.

روش تشخیص: در لاگ فایروال یا لاگ امنیتی سرور، دنبال IPهای بلاک‌شده بگردید. اگر IPهای Cloudflare در لیست هستند، همین لحظه از لیست سیاه حذف کنید. برای درک بهتر امنیت سرور، افزایش امنیت سرور و امنیت سرور چه اصولی دارد راهنمای دقیقی هستند.

پورت‌های باز و تنظیمات Listen در وب‌سرور

لایه‌ای که کم‌تر کسی به آن توجه می‌کند اما در عمل، یکی از ریشه‌های شایع 521 است: پورت‌های باز. Cloudflare به‌طور پیش‌فرض به پورت 80 و 443 وصل می‌شود. اگر وب‌سرور شما روی پورت دیگری listen کند یا فایروال این پورت‌ها را بسته باشد، اتصال fail می‌شود.

سه سناریوی دقیق در این لایه:

  • بسته بودن پورت 443: اگر پورت 443 در فایروال هاست بسته باشد، اتصال HTTPS از Cloudflare fail می‌شود. راه‌حل: باز کردن پورت 443 در فایروال هاست.
  • Listen روی پورت غیر استاندارد: اگر Nginx یا Apache به‌جای 80 و 443 روی پورت 8080 یا 8443 listen کند، Cloudflare نمی‌تواند وصل شود. این پیکربندی در هاست‌های اشتراکی خاص دیده می‌شود.
  • پورت Cloudflare اشتباه تنظیم شده: در پنل Cloudflare، بخش «SSL/TLS → Origin Server» اجازه می‌دهد پورت مبدأ را تغییر دهید. اگر این مقدار اشتباه تنظیم شده باشد، اتصال به پورت اشتباه صورت می‌گیرد.

روش تشخیص: با nc -zv YOUR_IP 443 و nc -zv YOUR_IP 80 از خارج، بررسی کنید که پورت‌ها باز هستند. اگر بسته بودند، ریشه در فایروال هاست یا وب‌سرور است. برای دستورات دقیق شبکه، دستورات ضروری CLI برای مدیریت سرور راهنمای عملیاتی است.

521 نمی‌گوید سرور خاموش است؛ می‌گوید اتصال شبکه برقرار نشد. این تفاوت، کل مسیر عیب‌یابی را تغییر می‌دهد: اول پورت‌ها و فایروال، بعد وب‌سرور و اپلیکیشن.

521 در Nginx و Apache

اگر پورت‌ها باز باشند و فایروال مشکلی نداشته باشد، لایه بعدی، پیکربندی وب‌سرور است. Nginx یا Apache ممکن است به‌دلیل پیکربندی نادرست، اتصال از Cloudflare را رد کنند. سه سناریوی دقیق:

  1. Virtual Host اشتباه: اگر در Nginx یا Apache، virtual host دامنه شما تعریف نشده باشد یا به‌اشتباه به دامنه دیگری اشاره کند، اتصال از Cloudflare به خطای name-based virtual hosting می‌خورد. راه‌حل: بررسی دقیق فایل‌های پیکربندی و تطبیق server_name یا ServerAlias با دامنه.
  2. IP Allow/Deny در پیکربندی: اگر در پیکربندی Nginx یا Apache، بلوک‌هایی مثل allow یا deny وجود داشته باشد و IPهای Cloudflare در لیست مجاز نباشند، اتصال رد می‌شود.
  3. SSL Handshake Fail: اگر Nginx با گواهی معتبر ولی ناسازگار با SNI تنظیم شده باشد، اتصال HTTPS از Cloudflare fail می‌شود. راه‌حل: بررسی فایل گواهی و تطبیق با دامنه.

روش تشخیص: در لاگ Nginx یا Apache، دنبال کد 400 یا 403 در بازه‌های زمانی 521 بگردید. اگر تعداد بالایی از این کدها از IPهای Cloudflare دیده می‌شود، ریشه در پیکربندی وب‌سرور است. برای عیب‌یابی عمیق‌تر، بررسی خطاهای سرور در لاگ‌ها راهنمای دقیقی است. برای پیکربندی امنیت وب‌سرور، سرور وردپرس چه مشخصاتی باید داشته باشد و تفاوت سرور لینوکس و ویندوز مفید هستند.

SSL، Full (Strict) و گواهی معتبر

Cloudflare چهار حالت SSL ارائه می‌دهد: Off، Flexible، Full و Full (Strict). انتخاب اشتباه این حالت، یکی از شایع‌ترین ریشه‌های 521 در سایت‌های وردپرسی است. سه سناریوی دقیق:

  • حالت Full (Strict) با گواهی self-signed: اگر حالت SSL روی Full (Strict) تنظیم شده باشد اما سرور شما گواهی self-signed یا منقضی داشته باشد، Cloudflare اتصال را رد می‌کند و 521 یا 526 برمی‌گرداند. راه‌حل: نصب گواهی معتبر (Let's Encrypt یا تجاری) یا تغییر حالت SSL به Full (بدون Strict).
  • حالت Flexible با ریدایرکت HTTPS در سرور: اگر حالت SSL روی Flexible باشد اما سرور شما درخواست‌های HTTP را به HTTPS ریدایرکت کند، Cloudflare در حلقه بی‌پایان ریدایرکت می‌افتد و در نهایت 521 می‌دهد. این سناریو در سایت‌های وردپرسی که از افزونه Really Simple SSL استفاده می‌کنند، شایع است.
  • گواهی منقضی: اگر گواهی SSL سرور شما منقضی شده باشد، در حالت Full (Strict) اتصال fail می‌شود. راه‌حل: تمدید یا نصب گواهی جدید. راهنمای نصب و تمدید در نصب SSL و فعال‌سازی HTTPS آمده است.

روش تشخیص: در پنل Cloudflare، بخش «SSL/TLS» را باز کنید و حالت فعلی را ببینید. سپس با ابزار آنلاین، گواهی SSL سرور خود را بررسی کنید (تاریخ انقضا، زنجیره اعتبار و تطبیق دامنه). اگر گواهی خودامضا یا منقضی است، ریشه همان است. توضیح کامل SSL و گواهی‌ها در SSL چیست و انواع گواهی SSL آمده است.

مشکلات هاست و سرور مبدأ

اگر همه لایه‌های بالایی سالم باشند، لایه بعدی، خود هاست و سرور مبدأ است. حتی با فایروال درست و پیکربندی صحیح وب‌سرور، اگر هاست شما در لحظه با مشکل مواجه باشد، Cloudflare نمی‌تواند به آن وصل شود و 521 برمی‌گرداند. سه سناریوی دقیق:

  1. هاست در حال نگهداری است: بعضی هاست‌ها برای نگهداری برنامه‌ریزی‌شده یا اضطراری، سرویس را به‌طور موقت متوقف می‌کنند. اگر در لحظه نگهداری، Cloudflare تلاش کند به سرور وصل شود، 521 می‌گیرد. راه‌حل: تماس با پشتیبانی و بررسی زمان‌بندی نگهداری.
  2. هاست به‌دلیل بار اضافه، اتصال را نمی‌پذیرد: اگر سرور شما تحت فشار بالای منابع باشد، ممکن است اتصال TCP جدید را نپذیرد تا منابع آزاد شود. این سناریو در ساعات اوج ترافیک شایع است. راهنمای کاهش بار در کاهش مصرف منابع هاست آمده است.
  3. خطای DNS یا IP اشتباه: اگر IP مبدأ در پنل Cloudflare اشتباه ثبت شده باشد (مثلاً IP قدیمی بعد از مهاجرت هاست)، Cloudflare به IP اشتباهی وصل می‌شود و اتصال fail می‌شود. راه‌حل: تطبیق IP در رکورد A یا AAAA در پنل Cloudflare با IP واقعی سرور.

روش تشخیص: با ping YOUR_IP از خارج و با curl از یک ابزار آنلاین، بررسی کنید که سرور شما از دید بیرونی قابل دسترسی است. برای درک دقیق تأثیر هاست بر سرعت و پایداری، تأثیر هاست بر سرعت سایت و بهترین هاست برای وردپرس راهنمای دقیقی هستند.

Rate Limiting و محدودسازی Cloudflare

Cloudflare به‌طور پیش‌فرض، در بعضی شرایط، ترافیک به سرور مبدأ را محدود می‌کند. اگر این محدودیت به‌اشتباه فعال شده باشد یا آستانه آن با ترافیک سایت شما هماهنگ نباشد، ممکن است درخواست‌ها با 521 پاسخ بگیرند. سه سناریوی دقیق:

  • Rate Limiting اشتباه تنظیم‌شده: اگر در پلن Cloudflare خود قاعده‌ای برای Rate Limiting فعال کرده باشید که نرخ بالای درخواست از یک IP را محدود می‌کند، ممکن است کاربران عادی هم بلاک شوند. راه‌حل: تنظیم دقیق قاعده با آستانه‌های متناسب با ترافیک واقعی.
  • Under Attack Mode: اگر در پنل Cloudflare، حالت «Under Attack» فعال باشد، سیستم برای همه بازدیدکنندگان چالش امنیتی نمایش می‌دهد و در بعضی شرایط، اتصال به مبدأ را محدود می‌کند. راه‌حل: غیرفعال کردن این حالت وقتی حمله پایان یافته است.
  • Security Level بالا: اگر Security Level روی «I'm Under Attack» یا «High» تنظیم شده باشد، Cloudflare رفتار تهاجمی‌تری در فیلتر ترافیک دارد و ممکن است اتصال مبدأ را رد کند.

روش تشخیص: در پنل Cloudflare، بخش «Security» را بررسی کنید. وضعیت Security Level، Under Attack Mode و Rate Limiting Rules را ببینید. اگر خطا در بازه‌های کوتاه بعد از فعال‌سازی یک قاعده رخ داده، ریشه همان قاعده است.

521 گاهی از خود Cloudflare می‌آید، نه از سرور شما. قبل از هر اقدام روی سرور، تنظیمات Security، Rate Limiting و SSL در پنل Cloudflare را بررسی کنید.

تنظیمات اشتباه در پنل Cloudflare

بعضی تنظیمات در پنل Cloudflare می‌توانند به‌طور غیرمستقیم باعث بروز 521 شوند. این تنظیمات معمولاً از دید کاربر پنهان هستند اما اثرشان در لایه اتصال ظاهر می‌شود. سه سناریوی دقیق:

  1. Proxy Status اشتباه: اگر رکورد A یا CNAME شما در Cloudflare به‌جای حالت Proxied، روی DNS Only باشد و در عین حال تنظیمات دیگر روی Proxied باشد، ممکن است رفتار ناسازگار رخ دهد.
  2. Page Rules ناسازگار: بعضی Page Rules می‌توانند درخواست‌ها را به مسیرهای اشتباهی هدایت کنند یا رفتار proxy را تغییر دهند.
  3. Origin Rules یا Transform Rules: اگر قواعد Origin یا Transform فعال باشند و پیکربندی مبدأ را تغییر دهند، ممکن است اتصال به سرور شما به مسیر اشتباهی برود.

روش تشخیص: در پنل Cloudflare، بخش «Rules» را باز کنید و همه قواعد فعال را مرور کنید. اگر خطا در بازه‌های کوتاه بعد از افزودن یک قاعده رخ داده، ریشه همان قاعده است. تنظیمات کامل CDN وردپرس در راه‌اندازی CDN برای وردپرس آمده است.

521 در سایت‌های وردپرسی

سایت‌های وردپرسی در پشت Cloudflare، سناریوهای خاص خودشان را برای خطای 521 دارند. سه سناریوی پرتکرار در پروژه‌های واقعی:

  1. افزونه امنیتی و بلاک IPهای Cloudflare: افزونه‌هایی مثل Wordfence، Solid Security یا Limit Login Attempts ممکن است به‌طور خودکار IPهایی که نرخ بالای درخواست دارند را بلاک کنند. اگر این IPها از Cloudflare باشند، اتصال fail می‌شود. راه‌حل: افزودن فهرست IPهای Cloudflare به allowlist افزونه.
  2. افزونه SSL و ریدایرکت اجباری: افزونه‌هایی مثل Really Simple SSL که HTTP را به HTTPS ریدایرکت می‌کنند، اگر با حالت SSL در Cloudflare ناسازگار باشند، می‌توانند 521 ایجاد کنند. راه‌حل: تطبیق حالت SSL در Cloudflare با تنظیمات افزونه.
  3. افزونه کش و کش سرور مبدأ: بعضی افزونه‌های کش، در combination با Cloudflare، رفتارهای ناسازگار ایجاد می‌کنند. راه‌حل: انتخاب افزونه کش که سازگاری رسمی با Cloudflare داشته باشد. راهنمای انتخاب در بهترین افزونه‌های کش وردپرس آمده است.

روش تشخیص: روی استجینگ، بدون Cloudflare سایت را تست کنید. اگر سایت سالم بود اما با Cloudflare 521 می‌دهد، ریشه در تعامل افزونه با Cloudflare است. امنیت کلی وردپرس در راهنمای امنیت وردپرس و رفع خطاهای مرتبط در رفع خطاهای رایج ووکامرس و عیب‌یابی خطاهای ووکامرس آمده است.

دلایل شایع بروز 521

بعد از آشنایی با لایه‌ها، فهرست سریع دلایل شایع 521 در پروژه‌های واقعی را مرور کنیم:

  1. فایروال سرور، IPهای Cloudflare را مسدود کرده: شایع‌ترین سناریو در هاست‌های اشتراکی و VPS.
  2. پورت 80 یا 443 در فایروال بسته است: سرور از دید خارج قابل دسترسی نیست.
  3. Listen اشتباه وب‌سرور: Nginx یا Apache روی پورت غیر استاندارد listen می‌کند.
  4. حالت SSL ناسازگار: Full (Strict) با گواهی self-signed یا منقضی.
  5. گواهی SSL منقضی: انقضای گواهی بدون تمدید به‌موقع.
  6. IP مبدأ اشتباه در پنل Cloudflare: بعد از مهاجرت هاست، رکورد A به‌روز نشده است.
  7. افزونه امنیتی با بلاک خودکار: بلاک IPهای Cloudflare توسط افزونه.
  8. حالت Under Attack در Cloudflare: رفتار تهاجمی در فیلتر ترافیک.
  9. هاست در حال نگهداری: سرویس به‌طور موقت متوقف است.
  10. Virtual Host اشتباه در Nginx یا Apache: دامنه به مسیر اشتباهی هدایت می‌شود.

پروتکل عیب‌یابی گام‌به‌گام

حالا ترتیب عملی عیب‌یابی، از سریع‌ترین به دقیق‌ترین:

  1. بررسی وضعیت سرور مبدأ از دید خارجی: با curl -I https://YOUR_IP یا از ابزار آنلاین مثل GTmetrix، تست کنید. اگر سرور از خارج پاسخ می‌دهد، ریشه در فایروال یا IP بلاک Cloudflare است.
  2. بررسی فایروال سرور: در سرور، با iptables -L یا ufw status بررسی کنید که IPهای Cloudflare بلاک نشده باشند.
  3. بررسی پورت‌های باز: با nc -zv YOUR_IP 80 و nc -zv YOUR_IP 443 از خارج تست کنید. اگر بسته بودند، ریشه در فایروال یا وب‌سرور است.
  4. بررسی حالت SSL در Cloudflare: در پنل Cloudflare، حالت SSL را ببینید و با گواهی سرور خود تطبیق دهید.
  5. بررسی IP مبدأ در DNS: در پنل Cloudflare، رکورد A را ببینید. اگر IP با سرور واقعی هماهنگ نیست، اصلاح کنید.
  6. بررسی Virtual Host در Nginx یا Apache: فایل‌های پیکربندی را باز کنید و مطمئن شوید دامنه درست تعریف شده.
  7. بررسی لاگ Nginx یا Apache: در لاگ‌ها دنبال کد 400، 403 یا SSL handshake fail بگردید.
  8. بررسی افزونه‌های وردپرس: روی استجینگ، افزونه‌های امنیتی و SSL را موقتاً غیرفعال کنید و تست بگیرید.
  9. بررسی تنظیمات Cloudflare: بخش Security، Rate Limiting، Page Rules و Origin Rules را مرور کنید.
  10. تماس با پشتیبانی هاست یا Cloudflare: اگر همه لایه‌ها بررسی شد و خطا ادامه یافت، از پشتیبانی هاست و Cloudflare بخواهید لاگ‌های دقیق را بررسی کنند.

برای خطاهای مرتبط با سرور و CDN، خطای 500 Internal Server Error، خطای DNS سرور و خطای 504 Gateway Timeout مسیرهای مکمل عیب‌یابی هستند. برای اصول اتصال CDN و سرعت، نقش CDN در سرعت و بهینه‌سازی سرعت سایت راهنمای دقیقی هستند.

در عیب‌یابی 521، اولین کار این نیست که تنظیمات Cloudflare را عوض کنم. اولین کار این است که از یک IP خارجی بررسی کنم که سرور من از دید بیرونی چه پاسخ می‌دهد.

اشتباهات پرهزینه در تشخیص

در پرونده‌های پشتیبانی که بازبینی کرده‌ام، این پنج اشتباه بیشتر از بقیه تکرار می‌شود:

  • خاموش کردن Cloudflare برای «رفع سریع»: این کار مشکل را موقتاً حل می‌کند اما سایت را در برابر حملات باز می‌گذارد و مزایای CDN را از دست می‌دهید. راه‌حل درست: تشخیص دقیق لایه و رفع ریشه.
  • اشتباه گرفتن 521 با 522: 521 مشکل اتصال TCP است و 522 مشکل timeout. اگر این دو را با هم اشتباه بگیرید، در لایه اشتباه وقت تلف می‌کنید.
  • نادیده گرفتن فایروال هاست: بعضی ادمین‌ها فقط به فایروال سرور خود (iptables) نگاه می‌کنند و فایروال هاست اشتراکی را از قلم می‌اندازند. همیشه با پشتیبانی هاست بررسی کنید.
  • تغییر همزمان حالت SSL و افزونه SSL: اگر همزمان دو چیز را تغییر دهید، نمی‌دانید کدام مؤثر بوده. یک تغییر، یک تست.
  • بی‌توجهی به لاگ Cloudflare: پنل Cloudflare، لاگ دقیق درخواست‌ها و خطاها دارد اما اکثر کاربران از آن استفاده نمی‌کنند. این لاگ، دقیق‌ترین منبع تشخیص در این لایه است.

پرسش و پاسخ کاربردی درباره خطای 521

521 Web Server Is Down با 522 Connection Timed Out چه تفاوتی دارد؟ 521 به‌معنای «اتصال TCP برقرار نشد» است؛ یعنی Cloudflare تلاش کرده به سرور شما وصل شود اما حتی هند‌شیک اولیه انجام نشده. 522 به‌معنای «اتصال برقرار شد اما پاسخ در بازه زمانی مشخص نرسید» است؛ یعنی سرور شما در حال پردازش کند است یا فایروال آن کند پاسخ می‌دهد.

چرا 521 فقط برای بعضی کاربران رخ می‌دهد؟ این نشانه Rate Limiting یا Under Attack Mode در Cloudflare است. بعضی کاربران ممکن است از IPهایی درخواست کنند که محدودیت برایشان فعال شده و بعضی دیگر نه. لاگ Cloudflare و Rate Limiting Rules را بررسی کنید.

آیا خاموش بودن سایت، همیشه باعث 521 می‌شود؟ خیر. اگر سرور شما خاموش باشد، معمولاً 521 رخ می‌دهد اما نه همیشه. اگر سرور خاموش باشد و Cloudflare نتواند حتی به IP دسترسی پیدا کند، ممکن است 523 Origin Is Unreachable برگرداند. تفاوت 521 و 523 در لایه تشخیص خطاست.

آیا 521 می‌تواند از سمت هاست باشد نه سرور من؟ بله. اگر هاست در حال نگهداری باشد یا فایروال هاست IPهای Cloudflare را بلاک کرده باشد، 521 رخ می‌دهد. با پشتیبانی هاست تماس بگیرید و شواهد دقیق (IP، زمان، لاگ) ارائه دهید.

آیا تغییر حالت SSL از Full (Strict) به Full باعث رفع 521 می‌شود؟ اگر ریشه در گواهی self-signed یا منقضی باشد، بله. اما تغییر به Full، امنیت را کاهش می‌دهد. راه‌حل بهتر: نصب گواهی معتبر و حفظ Full (Strict).

چرا بعد از مهاجرت به هاست جدید، 521 افزایش یافت؟ معمولاً به‌دلیل به‌روز نشدن IP مبدأ در پنل Cloudflare. بعد از مهاجرت، باید رکورد A یا AAAA را با IP جدید به‌روز کنید. اگر این کار را نکنید، Cloudflare به IP قدیمی وصل می‌شود که دیگر فعال نیست.

آیا افزونه امنیتی وردپرس می‌تواند 521 ایجاد کند؟ بله. بعضی افزونه‌های امنیتی، به‌طور خودکار IPهایی که نرخ بالای درخواست دارند را بلاک می‌کنند. اگر این IPها از Cloudflare باشند، تمام درخواست‌های Cloudflare fail می‌شود و 521 رخ می‌دهد. راه‌حل: افزودن فهرست IPهای Cloudflare به allowlist افزونه.

آیا فایروال هاست می‌تواند IPهای Cloudflare را بلاک کند؟ بله، و این یکی از شایع‌ترین ریشه‌های 521 در هاست‌های اشتراکی است. بعضی هاست‌ها به‌دلیل نگرانی از حملات DDoS، IPهای پرترافیک را بلاک می‌کنند که ممکن است IPهای Cloudflare هم در میان آن‌ها باشند. راه‌حل: تماس با پشتیبانی هاست.

آیا 521 می‌تواند از سمت دیتابیس رخ دهد؟ خیر، 521 یک خطای لایه اتصال شبکه است و به دیتابیس ارتباطی ندارد. اگر دیتابیس مشکل داشته باشد، خطای 500 یا 502 می‌بینید.

آیا می‌توانم در حالت Off Cloudflare، خطای 521 را رفع کنم؟ در حالت Off، Cloudflare به‌عنوان proxy عمل نمی‌کند و ترافیک مستقیماً به سرور شما می‌رود. اگر در این حالت سایت سالم است اما با Cloudflare 521 می‌گیرد، ریشه در تنظیمات Cloudflare یا فایروال سرور است.

آیا 521 با حالت Dev Mode Cloudflare ارتباطی دارد؟ در حالت Dev Mode، Cloudflare بخشی از کش را غیرفعال می‌کند اما اتصال به مبدأ همچنان برقرار می‌شود. اگر در Dev Mode هم 521 می‌گیرید، ریشه در لایه اتصال مبدأ است نه در کش.

چطور از بروز 521 در آینده پیشگیری کنم؟ سه اصل: (۱) همیشه فهرست IPهای Cloudflare را در allowlist فایروال و افزونه‌های امنیتی نگه دارید؛ (۲) بعد از هر مهاجرت هاست، IP مبدأ را در پنل Cloudflare به‌روز کنید؛ (۳) تاریخ انقضای گواهی SSL را در تقویم یادآوری کنید و پیش از موعد تمدید کنید.

آیا WAF خود Cloudflare می‌تواند باعث 521 شود؟ WAF Cloudflare به‌طور معمول پاسخ 403 یا 1020 برمی‌گرداند نه 521. اما اگر قواعد WAF به‌اشتباه درخواست‌های Cloudflare را به دام بیندازند و اتصال مبدأ را مختل کنند، ممکن است به‌طور غیرمستقیم 521 رخ دهد. تنظیمات WAF را در بخش Security بررسی کنید.

نگاه عملیاتی به پایداری سایت در پشت CDN

خطای 521 Web Server Is Down در ظاهر یک پیام ساده است؛ در عمل، یک چالش درباره «اتصال شبکه» که در یکی از چند لایه ممکن است شکل گرفته باشد. سه اصل که از این مسیر با من می‌ماند و در هر پروژه واقعی اجرا می‌کنم:

  1. اول از دید خارجی نگاه کن، بعد در سرور غوطه‌ور شو: قبل از هر اقدام روی سرور یا Cloudflare، با یک ابزار خارجی بررسی کنید که سرور شما از بیرون چه پاسخ می‌دهد. اگر از خارج سالم است اما از Cloudflare 521 می‌گیرد، ریشه در لایه میانی است نه در سرور شما.
  2. فهرست IPهای Cloudflare را همیشه در allowlist داشته باش: این کار ساده، جلوی بخش بزرگی از خطاهای 521 را می‌گیرد. هم در فایروال سرور، هم در فایروال هاست و هم در افزونه‌های امنیتی، IPهای Cloudflare باید به‌عنوان «دوستان» تعریف شده باشند.
  3. پایش مداوم اتصال از دید Cloudflare: ابزارهایی مثل UptimeRobot و Cloudflare Analytics به شما اجازه می‌دهند ترند خطاهای اتصال را ببینید. اگر ترند صعودی داشت، پیش از بحران ریشه را پیدا کنید — نه در لحظه‌ای که مشتریان تماس می‌گیرند. اصول پایش سرور در بررسی خطاهای سرور در لاگ‌ها و نقش CDN در سرعت آمده است.

اگر در پروژه‌ای با مشکل 521 دست‌وپنجه نرم کرده‌اید، برای من جالب است بدانم کدام لایه بیشترین وقت شما را گرفت: فایروال، پورت‌ها، SSL، IP مبدأ یا تنظیمات Cloudflare. تجربه‌تان را در دیدگاه‌ها بنویسید؛ مخصوصاً اگر نشانه‌ای کشف کرده‌اید که در این فهرست نبوده. همین نشانه‌ها، دقیق‌ترین راهنمای نفر بعدی‌اند. ☁️