خطاهای 5xx پشت CDN تقریباً همیشه یعنی «لبهٔ CDN نتوانست پاسخ درستی از سرور مبدأ بگیرد». 502 یعنی پاسخ نامعتبر یا اتصال رد شد، 504 و 524 یعنی مبدأ دیر جواب داد، 522 یعنی اتصال به مبدأ برقرار نشد و 520 یعنی مبدأ پاسخ غیرمنتظره داد. اولین قدم همیشه تست مستقیم مبدأ بدون CDN است: اگر مبدأ مستقیم هم خطا میدهد، مشکل روی سرور شماست.
کدهای 5xx به زبان ساده
| کد | نام | معنی در پشت CDN | محتملترین علت |
|---|---|---|---|
| 500 | Internal Server Error | خود اپلیکیشن مبدأ خطا داده | باگ، خطای PHP/پایتون، دیتابیس |
| 502 | Bad Gateway | پاسخ نامعتبر از مبدأ یا اتصال رد شد | سرویس خاموش، پورت اشتباه، پروسهٔ کرشکرده |
| 503 | Service Unavailable | مبدأ موقتاً در دسترس نیست | بار زیاد، حالت تعمیرات، محدودیت نرخ |
| 504 | Gateway Timeout | مبدأ در زمان مجاز پاسخ نداد | کوئری کند، پردازش طولانی |
| 520 | Unknown Error | پاسخ خالی یا غیرمنتظره از مبدأ | کرش پروسه، هدرهای خیلی بزرگ |
| 521 | Web Server Is Down | مبدأ اتصال را رد کرد | وبسرور متوقف |
| 522 | Connection Timed Out | اتصال TCP به مبدأ برقرار نشد | فایروال، آیپی اشتباه، سرور خاموش |
| 524 | A Timeout Occurred | اتصال برقرار شد ولی پاسخ دیر آمد | درخواست طولانیتر از مهلت |
کدهای 52x اصطلاحاً توسط برخی CDNها (مثل Cloudflare) تعریف شدهاند؛ مفهوم مشابه در CDNهای دیگر ممکن است با 502 یا 504 نمایش داده شود.
گام اول برای همهٔ خطاها: تست مستقیم مبدأ
# از خود سرور مبدأ
curl -sv http://127.0.0.1:PORT/ -o /dev/null
# از بیرون، مستقیم به آیپی مبدأ
curl -sv -H "Host: www.example.com" http://ORIGIN_IP:PORT/ -o /dev/null
- مبدأ مستقیم هم خطا میدهد → مشکل روی سرور شماست (ادامهٔ همین راهنما).
- مبدأ مستقیم سالم است ولی از CDN خطا → تنظیم آدرس/پورت مبدأ در CDN، فایروال یا محدودیت روی آیپی لبهها را بررسی کنید (چکلیست بعد از اتصال CDN).
رفع 502 و 521: سرویس پاسخ نمیدهد
sudo systemctl status nginx # یا apache2، یا سرویس اپلیکیشن
sudo ss -tlnp | grep -E ':80|:443|:3000'
sudo journalctl -u nginx --since "30 min ago"
sudo tail -n 50 /var/log/nginx/error.log
علتهای رایج:
- پروسهٔ پشت Nginx خاموش است (PHP-FPM، Node، Gunicorn): connect() failed (111: Connection refused) در error.log.
- سوکت یا پورت اشتباه در proxy_pass یا fastcgi_pass.
- کمبود رم و OOM Killer که پروسه را کشته است: dmesg -T | grep -i oom؛ راهنمای پر شدن رم سرور.
رفع 504 و 524: پاسخ دیر میرسد
- کوئریهای کند دیتابیس: slow query log را فعال و ایندکسهای لازم را اضافه کنید.
- کار طولانی در درخواست وب: کارهایی مثل ساخت گزارش بزرگ یا ارسال ایمیل انبوه را به صف پسزمینه منتقل کنید.
- تایماوتهای داخلی:
proxy_read_timeoutدر Nginx یاrequest_terminate_timeoutدر PHP-FPM را بررسی کنید؛ اما افزایش بیحساب تایماوت درمان نیست. - منابع ناکافی: اگر
load averageبالا و steal زیاد است، پلن بزرگتر یا بهینهسازی لازم است.
رفع 522: اتصال برقرار نمیشود
sudo ufw status verbose
sudo iptables -L -n | head -50
- پورت مبدأ در فایروال بسته است یا فقط برای آیپیهای خاص باز است.
- آیپی مبدأ در تنظیمات CDN اشتباه است (مثلاً پس از ساخت سرور جدید، آیپی قبلی مانده).
- سرور خاموش یا بهدلیل اتمام موجودی متوقف شده است.
- اختلال شبکه بین لبه و مبدأ؛ با mtr از سمت مبدأ بررسی کنید.
رفع 520: پاسخ غیرمنتظره
- پروسه در میانهٔ پاسخ کرش میکند؛ لاگ اپلیکیشن را ببینید.
- هدرهای پاسخ یا کوکیها بیش از حد بزرگاند.
- مبدأ اتصال را بدون پاسخ میبندد (مثلاً بهدلیل محدودیت keep-alive یا ماژول امنیتی).
503: سرویس موقتاً در دسترس نیست
- حالت تعمیرات CMS فعال مانده است.
- محدودکنندهٔ نرخ (rate limit) روی مبدأ، درخواستهای لبه را محدود کرده؛ چون همهٔ کاربران از چند آیپی لبه میآیند، محدودیت بر اساس آیپی باید روی هدر آیپی واقعی کاربر اعمال شود.
- سرور زیر بار سنگین است.
پیشگیری
یک ابزار پایش (مثل Uptime Kuma روی سرور جدا) نصب کنید تا خطاها را پیش از کاربران ببینید.
سرویسها را با systemd و Restart=always یا restart: unless-stopped در داکر اجرا کنید.
رم کافی و یک swap کوچک جلوی کشته شدن ناگهانی پروسهها را میگیرد.
کش کردن پاسخهای ثابت بار مبدأ را کم و احتمال تایماوت را پایین میآورد.
سؤالات متداول
خطای 502 از CDN است یا سرور من؟
اگر تست مستقیم مبدأ هم خطا بدهد، از سرور شماست. اگر مبدأ مستقیم سالم است، تنظیم اتصال CDN به مبدأ یا فایروال را بررسی کنید.
چرا خطا گاهبهگاه است؟
معمولاً بهدلیل اوج بار، کمبود رم در لحظههای خاص یا کرشهای دورهای یک پروسه. لاگها را در زمان خطا بررسی کنید.
افزایش تایماوت مشکل 504 را حل میکند؟
فقط علامت را پنهان میکند. علت کندی (کوئری، پردازش سنگین، منابع) را رفع کنید.
کاربران خطا میبینند ولی من نه؛ چرا؟
ممکن است از لبه یا مسیر متفاوتی وصل شوند یا شما نسخهٔ کششده را ببینید. زمان، شهر و اپراتور کاربران را جمعآوری و با پشتیبانی بررسی کنید.
از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی



