PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

حل لمشكلة 502 Bad Gateway و504 Gateway Timeout Error على Linux Server

Yazdır

حل لمشكلة 502 Bad Gateway و504 Gateway Timeout Error على Linux Server

دليل خطوة بخطوة لحل مشكلات Nginx وApache وPHP-FPM ومهلة الخدمة.

ينظر على المواقع 502 بوابة سيئة و 504 مهلة البوابة تحدث الأخطاء عادةً بسبب عدم حصول خادم الويب على الاستجابة الصحيحة من الخدمة الخلفية. يمكن أن تكون هذه الخدمة PHP-FPM أو واجهة Apache الخلفية أو تطبيق Node.js أو خدمة واجهة برمجة تطبيقات لوحة الألعاب أو تطبيق آخر خلف الوكيل.

هذه الأخطاء شائعة بشكل خاص في الاستضافة، ولوحة الألعاب، وWHMCS، وPterodactyl، ولوحة الإدارة المخصصة، وأنظمة التشغيل المستندة إلى الويب.

شرح بسيط: Nginx يشبه الحارس عند الباب. إذا لم يستجب PHP أو التطبيق الموجود بداخله، فسوف يُظهر خطأ 502 أو 504 للمستخدم.

1. الفرق بين الخطأ 502 والخطأ 504

  • 502 بوابة سيئة: لا يمكن لخادم الويب الاتصال بالخدمة الخلفية أو يتلقى استجابة مشوهة.
  • 504 مهلة البوابة: يبدو أن خدمة الواجهة الخلفية تستجيب، ولكن لم يتم إرجاع الاستجابة في الوقت المناسب.

لذا فإن الرقم 502 يمثل تعطلًا في الاتصال/الخدمة، بينما يمثل الرقم 504 مشكلة البطء أو انتهاء المهلة.

2. التحقق من حالات الخدمة

أولاً، تحقق مما إذا كان خادم الويب وخدمات PHP قيد التشغيل.

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

في أنظمة CentOS أو AlmaLinux أو Rocky Linux، يمكن تسمية خدمة PHP-FPM:

systemctl status php-fpm
systemctl status httpd

إذا توقفت الخدمة، أعد تشغيلها:

systemctl restart nginx
systemctl restart php-fpm

3. مراجعة ملفات السجل

ليس من الصحيح متابعة التخمين للأخطاء 502 و504. يُظهر ملف السجل السبب الحقيقي للخطأ.

tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/apache2/error.log

على الأنظمة المستندة إلى CentOS:

tail -n 100 /var/log/httpd/error_log

يمكن رؤية العبارات التالية في السجلات:

  • فشل الاتصال (): غير قادر على الاتصال بخدمة الواجهة الخلفية.
  • انتهت مهلة المنبع: تستجيب خدمة الواجهة الخلفية متأخرًا.
  • تم رفض الاتصال: الخدمة معطلة أو هناك إعادة توجيه إلى المنفذ الخطأ.
  • تم رفض الإذن: توجد مشكلة في مأخذ التوصيل أو إذن الملف.

4. مقبس PHP-FPM أو التحكم في المنفذ

يتصل Nginx بـ PHP-FPM عبر المقبس أو المنفذ. يجب أن يكون مسار PHP-FPM في ملف تكوين Nginx وقيمة الاستماع الفعلية لـ PHP-FPM متماثلتين.

grep -R "fastcgi_pass" /etc/nginx/sites-enabled/
grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf

على سبيل المثال، إذا كان Nginx يستخدم:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

يجب الاستماع إلى نفس المقبس على جانب PHP-FPM:

listen = /run/php/php8.2-fpm.sock
هام: إذا تغير إصدار PHP، فربما لا يزال Nginx يبحث في مسار مقبس PHP-FPM القديم. يعد هذا أحد الأسباب الأكثر شيوعًا لخطأ 502.

5. زيادة إعدادات المهلة

قد يتم تلقي أخطاء 504 في لوحات المعالجة الكبيرة أو أسواق التشغيل أو واجهات برمجة التطبيقات أو نصوص PHP بطيئة التشغيل. يمكن زيادة قيم مهلة Nginx.

nano /etc/nginx/nginx.conf

يمكن إضافة القيم التالية إلى كتلة http أو كتلة الخادم ذات الصلة:

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;

اختبر الإعدادات وأعد تشغيل Nginx:

nginx -t
systemctl restart nginx

6. التحقق من حدود عملية PHP-FPM

عندما تزيد حركة المرور، قد تكون حدود معاملات PHP-FPM غير كافية. في هذه الحالة، يتم وضع الطلبات في قائمة الانتظار وتحدث المهلة.

nano /etc/php/8.2/fpm/pool.d/www.conf

إعدادات المثال:

pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

يجب تعديل هذه القيم وفقًا لحجم ذاكرة الوصول العشوائي (RAM) الخاصة بالخادم. يؤدي تعيين قيمة عالية جدًا إلى زيادة استهلاك ذاكرة الوصول العشوائي (RAM).

الأخطاء الشائعة

  • تغيير الإعدادات دون النظر إلى ملف السجل
  • عدم تحديث مسار مقبس Nginx على الرغم من تغيير إصدار PHP
  • عدم إصلاح الاستعلام البطيء الفعلي عن طريق زيادة المهلة
  • زيادة حدود PHP-FPM دون حساب ذاكرة الوصول العشوائي
  • إعادة تشغيل الخدمة دون اختبار تكوين Nginx

الأسئلة الشائعة

هل الخطأ 502 يحدث دائمًا بسبب Nginx؟
لا، Nginx هو فقط الذي يظهر الخطأ. قد تكون المشكلة الحقيقية في PHP-FPM أو Apache backend أو تطبيق Node.js أو خدمة أخرى.

هل زيادة المهلة هي الحل النهائي لأخطاء 504؟
ليس دائما. زيادة المهلة توفر راحة مؤقتة. الحل الحقيقي هو العثور على الاستعلام البطيء أو المعالجة الثقيلة أو مشكلة الأداء.

هل من الآمن إعادة تشغيل PHP-FPM؟
إنه آمن بشكل عام، لكن الطلبات النشطة قد تتأثر لفترة قصيرة. في الأنظمة المزدحمة، ينبغي تفضيل ساعات حركة المرور المنخفضة.

توصيات الأداء

  • تحقق من إصدار PHP-FPM ومسار المقبس بانتظام.
  • افحص سجلات الاستعلام البطيئة في لوحة الويب وخدمات واجهة برمجة التطبيقات.
  • إذا كانت ذاكرة الوصول العشوائي (RAM) غير كافية، فلا تقم بزيادة قيمة PHP-FPM max_children دون وعي.
  • تقليل تحميل الواجهة الخلفية باستخدام نظام ذاكرة التخزين المؤقت.
  • قم بإدارة سجلات الأخطاء قبل أن تنمو باستخدام logrotate.

تم إعداد هذه المقالة خصيصًا لـ PvPServer.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner