דילוג לתוכן
חיפוש באתר

דומיינים ואחסון

502 Bad Gateway: מה השגיאה אומרת ואיך מוצאים את החוליה השבורה

מה זה 502 Bad Gateway, ההבדל מ-504, איך יודעים אם השגיאה הגיעה מ-Cloudflare או מהשרת, והסיבות הנפוצות באתרי וורדפרס — PHP-FPM, זיכרון ו-DNS.

· 1 צפיות ·

502 Bad Gateway היא שגיאה שמופיעה כשיש "מתווך" בדרך: שרת שמשמש כשער או פרוקסי פנה לשרת שמאחוריו, וקיבל ממנו תשובה לא תקינה. כך מגדירה אותה MDN. כמעט כל אתר מודרני בנוי בשכבות — Cloudflare מול השרת, Nginx מול PHP-FPM, מאזן עומסים מול כמה שרתים — ולכן 502 היא לא "השרת נפל", אלא "החוליה הבאה בשרשרת לא ענתה כמו שצריך". כדי לתקן אותה צריך לדעת איזה מתווך החזיר אותה, ומי מאחוריו.

איפה נמצאים המתווכים באתר רגיל

אתר וורדפרס טיפוסי מאחורי Cloudflare עובר שלוש קפיצות לפחות:

  1. הגולש ← Cloudflare — הרשת של Cloudflare מקבלת את הבקשה.
  2. Cloudflare ← שרת האינטרנט (Nginx, Apache או LiteSpeed) בשרת האחסון.
  3. שרת האינטרנט ← PHP (בדרך כלל PHP-FPM), שמריץ את וורדפרס ומדבר עם מסד הנתונים.

502 יכולה להיווצר בקפיצה 2 (Cloudflare לא קיבלה תשובה תקינה מהשרת) או בקפיצה 3 (Nginx לא קיבל תשובה תקינה מ-PHP). שתיהן נראות לגולש אותו דבר.

502 מול 504

MDN מבחינה בין השתיים: אם המתווך לא קיבל שום תשובה מהשרת שמאחוריו, הוא אמור להחזיר 504 Gateway Timeout. 502 פירושה שהתקבלה תשובה — אבל שבורה: חיבור שנסגר באמצע, תשובה לא תקנית, או תהליך שקרס תוך כדי. בפועל הגבול מטושטש, ושתי השגיאות מאובחנות כמעט באותה דרך. את 500 ו-503 — שגיאות שהשרת עצמו מחזיר — הסברתי במאמר שגיאה 500 ושגיאה 503.

האם ה-502 הגיע מ-Cloudflare או מהשרת שלכם?

זה המבחן הראשון, ו-Cloudflare עונה עליו בתיעוד שלה בצורה שלא אינטואיטיבית. לפי עמוד התמיכה של Cloudflare לשגיאות 502/504:

  • עמוד שגיאה ממותג של Cloudflare — ה-502 הגיע מהשרת שלכם. Cloudflare רק מציגה אותו.
  • עמוד ריק בלי מיתוג — ה-502 נוצר ב-Cloudflare עצמה.

Cloudflare מציינת שהמקרה הנפוץ הוא הראשון: הבעיה בשרת המקור. ההמלצות שלה לבדיקה: לוודא שהשרת עונה לבקשות עבור שם הדומיין המדויק, לבדוק עומס, קריסות או בעיות רשת, ולאתר שירותים שהגיעו ל-timeout או נחסמו. ל-502 לא ממותג היא מציינת גם בעיית דחיסה בשרת (כשהשרת שולח תוכן דחוס בלי לעדכן את אורך התשובה), ושגיאות חולפות בזמן ניתוב תנועה בין מרכזי נתונים, שנעלמות בתוך שניות.

הסיבות הנפוצות בשרת עצמו

PHP-FPM קרס, נתקע או מוצה

זו הסיבה הנפוצה ביותר באתרי וורדפרס. ל-PHP-FPM יש מספר מוגבל של תהליכים; כשכולם תפוסים בבקשות איטיות (תוסף כבד, שאילתה ארוכה למסד הנתונים, קריאה ל-API חיצוני שלא עונה), בקשות חדשות לא מקבלות מענה ו-Nginx מחזיר 502 או 504. ביומן השגיאות של Nginx זה נראה כך:

connect() to unix:/run/php/php-fpm.sock failed
upstream prematurely closed connection while reading response header

הפתרון האמיתי הוא לא רק להגדיל את מספר התהליכים, אלא למצוא מה מאט אותם. על אבחון כזה כתבתי במאמר וורדפרס איטי.

זיכרון נגמר

תהליך PHP שחורג ממגבלת הזיכרון נהרג באמצע הבקשה, והמתווך מקבל תשובה קטועה. אם 502 מופיעה דווקא בפעולות כבדות — ייבוא, יצירת דוח, העלאת תמונה גדולה — זה חשוד מרכזי.

השרת לא מכיר את הדומיין

אחרי העברת אתר, Cloudflare עשויה לפנות לשרת שאין בו הגדרה לשם הדומיין, או לשרת הישן. כאן גם רשומת DNS שגויה יכולה להיות האשמה; ראו רשומות DNS.

חומת אש בשרת חוסמת את Cloudflare

אם השרת מגביל גישה לפי כתובות IP, וטווחי Cloudflare לא ברשימה המותרת — חלק מהבקשות ייכשלו. זה קורה כש-Cloudflare מוסיפה טווחים וההגדרה בשרת לא מתעדכנת.

סדר עבודה מעשי

  1. זהו מי החזיר את השגיאה: עמוד ממותג (השרת שלכם) או ריק (Cloudflare).
  2. עקפו את Cloudflare לבדיקה: פנו ישירות לשרת (למשל עם curl וכתובת ה-IP) ובדקו אם הבעיה קיימת גם שם.
  3. קראו את יומן השגיאות של שרת האינטרנט ושל PHP מהדקות שבהן הופיעה השגיאה.
  4. בדקו עומס: מעבד, זיכרון, מספר תהליכי PHP פעילים.
  5. אם זה התחיל אחרי שינוי — עדכון תוסף, שינוי גרסת PHP, הגדרה חדשה — התחילו מלבטל אותו.

מה זה עושה לגוגל

לפי התיעוד של גוגל, שגיאות 5xx גורמות ל-Googlebot להאט זמנית את הסריקה. עמודים שכבר באינדקס נשמרים בשלב הראשון, אבל אם השגיאה נמשכת — הם יוסרו. 502 של כמה דקות לא תזיק; 502 חוזרת כל ערב בשעות העומס כבר תשפיע.

שאלות נפוצות

ריענון העמוד פתר — האם הבעיה נעלמה?

לא בהכרח. 502 שמופיעה ונעלמת היא בדרך כלל סימן לעומס או לתהליכים שנתקעים לסירוגין. אם זה חוזר, כדאי לבדוק יומנים ולהוסיף ניטור זמינות.

האם להעביר את Cloudflare למצב "DNS בלבד" כדי לבדוק?

אפשר לבדיקה קצרה, אבל זה חושף את כתובת השרת ומבטל את ההגנה. עדיף לבדוק ישירות מול כתובת ה-IP עם curl. הסבר על המצבים נמצא במאמר Cloudflare מה זה.

מאמרים קשורים: WP-Cron: איך המשימות המתוזמנות של וורדפרס עובדות ולמה פוסט לא פורסם בזמן.

שגיאות 502 חוזרות הן כמעט תמיד סימפטום של בעיית ביצועים או תצורה מתחת לפני השטח. את סוג האבחון הזה אני עושה במסגרת שיפור מהירות אתרים ותחזוקה — ואם האתר שלכם נתקע ב-502, כתבו לי.

אהבתם את המאמר?

בואו נבנה יחד!

מתכננים אתר חדש, פורטל, חנות או מערכת ניהול תוכן? ספרו לי על הפרויקט, ואחזור אליכם בעצמי. אני מתחיל תמיד בהבנת הצרכים העסקיים והטכניים — ורק אז ממליץ על הפתרון הנכון.

חיפוש באתר