502 باد غيتواي
وصل خادم الويب إلى PHP ولم يرد PHP. Nginx أو Apache يبلغان عن محادثة انتهت قبل أن تبدأ.
502 Bad Gateway
PHP-FPM إما لأسفل أو عمالها مشغولون. تحقق مما إذا كانت العملية تعمل قبل أي شيء آخر - تجمع توقف وحمام سباحة مشبعة تنتج نفس الصفحة وتحتاج إلى إصلاحات مختلفة.
الأسباب الأرجح أولًا.
افحص القائمة بالترتيب. يتيح لك كل فحص تأكيد السبب أو استبعاده قبل تغيير أي شيء، لأن الحلول تختلف والتخمين يكلّف أكثر من تنفيذ أمر للتحقق.
| السبب | كيفية التحقق | الإصلاح |
|---|---|---|
| PHP-FPM لا يعمل | حالة الخدمة تقول غير نشطة أو فاشلة. سجل خادم الويب يقول "connect () failed" أو "no live uptrops". | ابدأها ، ثم اقرأ لماذا توقفت. عادة ما يكون المسبح الذي خرج من تلقاء نفسه قد فعل ذلك لأن الجهاز نفد من الذاكرة. |
| كل عامل مشغول | المسبح يعمل، و 502s تأتي في رشقات نارية تحت حركة المرور، ويقول السجل المنبع توقيت بدلا من رفض. | العثور على طلب بطيء تحتل العمال. إضافة العمال إلى تجمع جائع من قبل نقطة نهاية بطيئة واحدة يشتري دقائق ، وليس إصلاح. |
| مسار المقبس أو المنفذ خاطئ | كل طلب 502s ، باستمرار ، بما في ذلك عناوين URL ذات المظهر الثابت التي تمر عبر PHP. السجل أسماء مأخذ التوصيل غير موجود. | نقطة خادم الويب في المقبس تجمع يستمع فعلا على. هذا يظهر مباشرة بعد تغيير إصدار PHP. |
| عامل تحطمت منتصف الطلب | يسجل سجل PHP-FPM خطأً فرديًا أو خروج طفل من إشارة ، موقوتة على الطلب. | حدد الامتداد المعني. نادراً ما يكون segfault رمز WordPress - عادة ما يكون إدخال اجتماع ملحق أصلي لم يتوقعه. |
| الوكيل في الأمام هو توقيت الخروج | الأصل يخدم غرامة الصفحة عند الطلب مباشرة ، وفقط عنوان URL العام 502s. | ارفع مهلة قراءة الوكيل ، أو اجعل الاستجابة البطيئة أسرع. الأصل ليس هو الشيء الذي يجب تغييره هنا. |
الإصلاح خطوة بخطوة.
تفترض الأوامر توفر WP-CLI والوصول إلى سطر الأوامر. إن لم يتوفرا، تشرح كل خطوة الإجراء كي تنفذه من لوحة التحكم أو عبر SFTP.
اسأل ما إذا كان PHP يعمل على الإطلاق
هذه الإجابة تزيل نصف الاحتمالات.
systemctl status php8.5-fpm --no-pager | head -n 12
اقرأ سجل خادم الويب للحصول على الشكوى المنبع بالضبط
"رفض الاتصال" و "توقيت المنبع" يعني أشياء مختلفة ويشير إلى أقسام مختلفة أعلاه.
grep -E 'upstream|502' /var/log/nginx/error.log | tail -n 20
انظر إلى سجل PHP-FPM للحوادث
يخرج على إشارة، وتحذيرات من أن جميع الأطفال مشغولون، وكلاهما يعيش هنا.
tail -n 40 /var/log/php8.5-fpm.log
انظر ما يفعله العمال في الواقع.
إذا كانت جميعها مشغولة بنفس عنوان URL ، فقد وجدت نقطة النهاية البطيئة.
wp cron event list --fields=hook,next_run_relative --status=due
إعادة تشغيل حمام السباحة بمجرد أن تعرف لماذا
إعادة التشغيل يزيل الأعراض. القيام بذلك دون قراءة السجل يعني القيام بذلك مرة أخرى غدا.
systemctl restart php8.5-fpm
ما تتولاه المنصة عنك.
يحتوي كل موقع على مجموعة PHP-FPM خاصة به في حاوية خاصة به مع حد الذاكرة الخاص به ، لذلك لا يمكن لأحد المواقع التي تستنفد عمالها أن 502 لأي شخص آخر - يبقى الفشل من حيث بدأ. إعادة تشغيل الخدمات هو زر بدلاً من جلسة SSH ، ولأن حجم المسبح يتم قياسه بالخطة بدلاً من مشاركته عبر جهاز كامل ، فإن الجار المشغول ليس أحد الأسباب في هذه القائمة.
الأسئلة الشائعة.
هل 502 خطأي أم خطأ المضيف؟
لماذا إعادة تشغيل PHP إصلاحه لفترة من الوقت؟
هل يمكن لمكون إضافي واحد أن يتسبب في 502 عبر الموقع بأكمله؟
كيف يختلف هذا عن 504؟
إن لم يكن هذا هو السبب.
قد تبدو هذه الأخطاء متشابهة في المتصفح.