502 Bad Gateway: عندما يفشل الخادم الذي خلف البروكسي
502 Bad Gateway يعني أن بروكسي أو بوابة تلقى ردًا غير صالح، أو لم يتلقَّ ردًا، من الخادم الخلفي الذي يعتمد عليه.
502 Bad Gateway يصدر من خادم يقف أمام خادم آخر، مثل بروكسي عكسي أو موزّع أحمال أو CDN، عندما يعيد الخادم الذي خلفه ردًا غير صالح أو لا يعيد أي رد. الخادم الأمامي يعمل؛ لكن التطبيق الذي خلفه لا يجيب بشكل صحيح.
التعريف
جاء في RFC 9110، القسم 15.6.3 أن الخادم، «أثناء عمله كبوابة أو بروكسي، تلقى ردًا غير صالح من خادم وارد وصل إليه أثناء محاولة تنفيذ الطلب». وفي البنية المعتادة يكون Nginx (البوابة) يتحدث إلى PHP-FPM أو Node.js أو Gunicorn أو خادم تطبيقات آخر. وإذا أجاب التطبيق بشكل صحيح لكن ببطء شديد، فتحصل على 504 بدلًا من ذلك.
الأسباب الشائعة
- خادم التطبيق متوقف: توقف PHP-FPM، أو انهارت عملية Node، أو أعادت الحاوية التشغيل.
- عنوان خلفي (upstream) خاطئ، كأن يشير Nginx إلى
php8.1-fpm.sockبعد الترقية إلى PHP 8.3. - مات التطبيق أثناء الطلب: إنهاء بسبب نفاد الذاكرة، أو انهيارات، أو أخطاء قاتلة تغلق الاتصال.
- ترويسات الرد أكبر من اللازم بالنسبة لذواكر البروكسي المؤقتة (buffers)، وغالبًا بسبب كوكيز كبيرة أو ترويسات أمان طويلة.
- عمليات نشر دون إعادة تشغيل سلسة (graceful)، فتنتج دفعات قصيرة من أخطاء 502.
يذكر سجل أخطاء Nginx السبب عادةً:
connect() to unix:/run/php/php8.1-fpm.sock failed (2: No such file or directory)
connect() failed (111: Connection refused) while connecting to upstream
upstream prematurely closed connection while reading response header from upstream
upstream sent too big header while reading response header from upstream
التأثير على السيو
تعامل Google الرمز 502 كأخطاء الخادم الأخرى بحسب وثائقها: يخفّض Googlebot معدل الزحف بما يتناسب مع عدد الروابط الفاشلة، ويُبقي الصفحات المفهرسة فترة، ويُسقط الروابط التي تواصل الفشل. وأخطاء 502 العارضة أثناء النشر غير ضارة في الغالب، لكنها تتراكم في المواقع الكبيرة وتظهر في إحصاءات الزحف وتقارير «Server error (5xx)» في Search Console.
كيف تصلح 502
لأصحاب المواقع
أعد التحميل بعد دقيقة. فإذا استمر الخطأ، فتواصل مع الاستضافة مع ذكر الوقت والرابط. وفي استضافة WordPress المُدارة، تُعد إضافة تُسقط PHP سببًا شائعًا.
للمطورين
# هل خادم التطبيق يعمل؟
systemctl status php8.3-fpm
sudo systemctl restart php8.3-fpm
# هل يشير Nginx إلى المقبس (socket) الصحيح؟
grep -R "fastcgi_pass" /etc/nginx/
# هل أُنهيت عملية بسبب نقص الذاكرة؟
dmesg -T | grep -i -E "killed process|out of memory"
وفي أخطاء «too big header» ارفع حجم الذواكر المؤقتة:
fastcgi_buffer_size 32k;
fastcgi_buffers 16 16k;
# أو، للخوادم الخلفية عبر proxy_pass
proxy_buffer_size 32k;
proxy_buffers 16 16k;
استخدم فحوصات الصحة (health checks) في موزّع الأحمال وإعادات تشغيل متدرجة أو سلسة كي لا تُسقط عمليات النشر الطلبات. وخلف Cloudflare قد يظهر عطل الخادم الأصلي برمز خاص بـ Cloudflare بدلًا من ذلك، مثل 520 أو 521.
كيف تتحقق
تُظهر أداة فحص حالة HTTP ما إذا كان الخطأ يصيب روابط كثيرة أم قليلة، وتخبرك ترويسة Server في أداة فحص ترويسات HTTP أي طبقة أنتجته.
HTTP/1.1 502 Bad Gateway
Server: nginx
Content-Type: text/html
Content-Length: 150 الأسئلة الشائعة
ما الفرق بين 502 و504؟
الرمز 502 يعني أن البوابة تلقت ردًا غير صالح أو لم تتلقَّ ردًا، غالبًا لأن التطبيق انهار أو لا يعمل. والرمز 504 يعني أن التطبيق كان قابلًا للوصول لكنه لم يجب قبل انتهاء مهلة البوابة.
هل 502 Bad Gateway خطئي أم خطأ استضافتي؟
هي مشكلة من جهة الخادم، فلا يستطيع الزوار إصلاحها. على خادمك الخاص افحص عملية التطبيق وإعدادات البروكسي؛ وفي الاستضافة المُدارة أرسل لاستضافتك رابط الخطأ ووقته.
هل يضر خطأ 502 بالسيو؟
الدفعات القصيرة نادرًا ما تهم، لكن 502 المتكرر أو طويل الأمد يجعل Googlebot يزحف أقل وقد يؤدي إلى إزالة الروابط من الفهرس.