คำว่า gateway ในข้อความนี้คือกุญแจสำคัญ 502 ไม่ได้บอกว่าเว็บของคุณพัง แต่บอกว่ามีเซิร์ฟเวอร์ตัวหนึ่งทำหน้าที่รับคำขอแล้วส่งต่อไปให้อีกตัวหนึ่ง และตัวที่ส่งต่อนั้นได้คำตอบกลับมาแบบที่เอาไปใช้ต่อไม่ได้
เมื่อเข้าใจว่าใครส่งงานให้ใคร การไล่หาสาเหตุจะง่ายขึ้นมาก เพราะคุณจะรู้ทันทีว่าควรไปดู log ของเครื่องไหนก่อน บทความนี้อธิบายโครงสร้างนั้น พร้อมลำดับการตรวจที่พาไปเจอต้นตอเร็วที่สุด
502 Bad Gateway หมายความว่าอะไรกันแน่
เว็บสมัยใหม่แทบไม่มีเครื่องเดียวจบ ปกติจะมีเซิร์ฟเวอร์ตัวหน้าคอยรับคำขอจากผู้ใช้ก่อน แล้วส่งต่อให้ตัวที่ทำงานจริงอยู่ข้างหลัง ตัวหน้านี้เรียกว่า reverse proxy หรือ gateway ตัวอย่างที่พบบ่อยคือ Nginx ที่วางอยู่หน้า PHP-FPM หรือหน้าแอป Node.js
502 เกิดขึ้นเมื่อตัวหน้าส่งคำขอไปแล้ว แต่ได้คำตอบที่ผิดรูปแบบกลับมา หรือปลายสายถูกตัดกลางคัน หรือตัวหลังไม่ตอบอะไรเลยเพราะไม่ได้ทำงานอยู่ ตัวหน้าจึงไม่มีอะไรจะส่งให้ผู้ใช้ นอกจากบอกว่า ปลายทางที่ผมคุยด้วยตอบมาไม่ดี
สิ่งสำคัญคือคนที่แสดงหน้า 502 ให้คุณเห็น มักไม่ใช่คนที่มีปัญหา ผู้ต้องสงสัยตัวจริงคือเครื่องหรือโปรเซสที่อยู่ข้างหลังมัน
502 ต่างจาก 500 และ 504 ยังไง
สาม error นี้อยู่ในตระกูล 5xx เหมือนกันคือฝั่งเซิร์ฟเวอร์มีปัญหา แต่ชี้ไปคนละจุด และแยกได้ชัดเจน
ถ้าที่คุณเจอเป็นเลข 500 ไม่ใช่ 502 ให้อ่าน 500 Internal Server Error คืออะไร ซึ่งไล่วิธีตรวจไว้คนละชุดกัน
| รหัส | ความหมาย | ควรไปดูที่ไหนก่อน |
|---|---|---|
| 500 | เซิร์ฟเวอร์ที่ประมวลผลเจอข้อผิดพลาดในตัวเอง | error log ของแอปหรือของ PHP |
| 502 | ตัวหน้าได้คำตอบที่ใช้ไม่ได้จากตัวหลัง | สถานะของโปรเซสเบื้องหลัง เช่น PHP-FPM หรือแอป Node |
| 503 | บริการไม่พร้อมให้บริการชั่วคราว | โหลดของเครื่อง จำนวนคิว และช่วงที่กำลังปิดปรับปรุง |
| 504 | ตัวหน้ารอตัวหลังจนหมดเวลา | งานที่ช้าผิดปกติ เช่น คิวรีฐานข้อมูลหรือการเรียก API ภายนอก |
สาเหตุที่พบบ่อยที่สุด
- โปรเซสเบื้องหลังไม่ได้ทำงานอยู่ — PHP-FPM แอป Node หรือ service ของคุณดับไป ไม่ว่าจะเพราะพังเองหรือเพิ่งรีสตาร์ตแล้วยังไม่ขึ้น
- โปรเซสเบื้องหลังถูกระบบสั่งปิดเพราะใช้หน่วยความจำเกิน — พบบ่อยบนเครื่องที่ RAM ตึง อาการเด่นคือ 502 โผล่เป็นช่วง ๆ ตอนคนเข้าเยอะ
- จำนวน worker ไม่พอรับคำขอพร้อมกัน — คิวเต็มแล้วคำขอใหม่ถูกปฏิเสธ
- ตั้งค่าที่อยู่ของปลายทางผิด — เช่น ชี้ socket หรือพอร์ตผิดตัวหลังจากย้ายเครื่องหรืออัปเกรดเวอร์ชัน
- ไฟร์วอลล์บล็อกการคุยกันภายในระหว่างสองตัวนี้
- ปลายทางส่งข้อมูลกลับมาผิดรูปแบบ เช่น มีข้อความ error ปนออกมาก่อน header
ไล่แก้ตามลำดับนี้
- 1ยืนยันก่อนว่าเป็นที่เว็บเราจริง — เปิดจากเน็ตอื่นหรือจากมือถือที่ไม่ได้ใช้ไวไฟเดียวกัน ถ้าทุกที่เหมือนกันหมด แปลว่าเป็นที่เซิร์ฟเวอร์
- 2ตรวจว่าโปรเซสเบื้องหลังยังทำงานอยู่ไหม — ถ้าไม่ ให้สั่งเริ่มใหม่แล้วดูว่ามันอยู่ได้นานหรือดับซ้ำ การดับซ้ำคือคำใบ้ว่าเป็นเรื่องหน่วยความจำหรือโค้ด ไม่ใช่อุบัติเหตุ
- 3อ่าน log สองฝั่งพร้อมกัน — log ของตัวหน้าจะบอกว่ามันติดต่อปลายทางไม่สำเร็จตอนกี่โมง ส่วน log ของตัวหลังจะบอกว่าตอนนั้นมันเจออะไร
- 4ดูหน่วยความจำที่เหลือของเครื่อง — ถ้าใกล้เต็มบ่อย ๆ ระบบจะสั่งปิดโปรเซสที่กินมากที่สุด ซึ่งมักเป็นตัวที่รันเว็บของคุณพอดี
- 5ตรวจค่าที่อยู่ของปลายทางในไฟล์ตั้งค่าของตัวหน้า — เทียบกับที่ปลายทางเปิดฟังอยู่จริง ให้ตรงกันทั้งพอร์ตและ path ของ socket
- 6ถ้าเพิ่งเปลี่ยนอะไรไปก่อนหน้านี้ ให้ย้อนกลับก่อนแล้วค่อยไล่ทีละอย่าง
ถ้าอยู่บนแชร์โฮสติ้ง จะทำอะไรได้บ้าง
บนแชร์โฮสติ้ง คุณไม่มีสิทธิ์รีสตาร์ตโปรเซสระดับระบบหรือดู log ของเครื่อง สิ่งที่ทำได้คือลดภาระของเว็บตัวเอง เช่น ปิดปลั๊กอินที่หนัก ลดงานเบื้องหลังที่ตั้งเวลาไว้ถี่เกิน และเปิดแคชหน้าเว็บ
ถ้าลดแล้วยังเจอ 502 ซ้ำ ๆ ให้แจ้งผู้ให้บริการพร้อมข้อมูลสามอย่าง คือเวลาที่เกิด หน้าเว็บที่เกิด และความถี่ ข้อมูลชุดนี้ช่วยให้ทีมงานหาช่วง log ที่ตรงกันได้เร็วขึ้นมาก
ถ้าเจอ 502 บ่อยจนกระทบผู้ใช้จริง มักถึงเวลาย้ายจากแชร์โฮสติ้งไปเครื่องที่คุมทรัพยากรได้เอง อ่านเทียบสองแบบได้ที่ VPS กับ Web Hosting ต่างกันยังไง
ต้องการเครื่องที่รีสตาร์ตเซอร์วิสและดู log ได้เอง
VPS ของ Plusweb ให้สิทธิ์ควบคุมเต็มรูปแบบ เลือกสเปกได้ตามโหลดจริง พร้อมทีมงานคนไทยดูแล 24 ชม.
คำถามที่พบบ่อย
502 Bad Gateway เกิดจากเครื่องของเราหรือเปล่า
ไม่ใช่ 502 เป็น error ฝั่งเซิร์ฟเวอร์ทั้งหมด การล้างแคชเบราว์เซอร์หรือเปลี่ยนเครื่องไม่ได้แก้ที่ต้นเหตุ มีเพียงกรณีเดียวที่เกี่ยวกับฝั่งผู้ใช้คือถ้าคุณต่อผ่านพร็อกซีหรือ VPN ที่มีปัญหาเอง ซึ่งลองปิดแล้วเข้าใหม่จะรู้ทันที
ทำไม 502 ถึงหายเองแล้วกลับมาใหม่
เพราะสาเหตุส่วนใหญ่เป็นเรื่องทรัพยากรที่เปลี่ยนไปตามช่วงเวลา เมื่อโปรเซสเบื้องหลังถูกปิดเพราะหน่วยความจำไม่พอ ระบบมักเริ่มมันขึ้นมาใหม่ให้เอง เว็บจึงกลับมาใช้ได้ชั่วคราว แล้วพังซ้ำเมื่อโหลดสูงอีกครั้ง
ใช้ Cloudflare แล้วเจอ 502 ต้องแก้ที่ Cloudflare ไหม
ส่วนใหญ่ไม่ ให้ดูก่อนว่าหน้า error เป็นของใคร ถ้าเป็นหน้าของ Cloudflare แปลว่าเขาติดต่อเซิร์ฟเวอร์ต้นทางของคุณไม่ได้ ต้นตอจึงยังอยู่ที่เครื่องคุณ ให้ตรวจว่าเซิร์ฟเวอร์ยังทำงานอยู่และไม่ได้บล็อกช่วง IP ของ Cloudflare ไว้
เพิ่ม RAM แล้ว 502 จะหายไหม
หายถ้าต้นตอคือหน่วยความจำไม่พอจริง ซึ่งดูได้จาก log ว่ามีการสั่งปิดโปรเซสเพราะหน่วยความจำหรือไม่ แต่ถ้าต้นตอเป็นการตั้งค่าผิดหรือโค้ดที่ค้าง การเพิ่ม RAM จะแค่ยืดเวลาออกไป ควรอ่าน log ให้ชัดก่อนตัดสินใจขยายสเปก
GUIDES
บทความที่เกี่ยวข้อง
อ่านต่อในหัวข้อใกล้เคียง
500 Internal Server Error คืออะไร? และวิธีไล่หาสาเหตุทีละขั้น
หน้าขาวที่เขียนว่า 500 Internal Server Error ไม่ได้บอกอะไรเลยว่าพังตรงไหน บทความนี้อธิบายว่ามันหมายถึงอะไรจริง ๆ สาเหตุที่พบบ่อยเรียงตามความน่าจะเป็น และลำดับการไล่ตรวจที่ทำให้เจอต้นตอเร็วที่สุด
อ่านต่อ504 Gateway Timeout คืออะไร? เมื่อการรอนานเกินกลายเป็น error
504 บอกว่ามีงานบางอย่างช้าเกินกว่าที่ระบบจะรอไหว บทความนี้อธิบายว่างานแบบไหนที่มักเป็นต้นเหตุ และทำไมการเพิ่มค่า timeout ถึงเป็นทางแก้ที่ผิดในเกือบทุกกรณี
อ่านต่อNginx คืออะไร? เข้าใจเว็บเซิร์ฟเวอร์และ Reverse Proxy ในบทความเดียว
Nginx คือซอฟต์แวร์ที่ทำหน้าที่รับคำขอจากผู้ใช้แล้วตอบกลับ ทั้งในบทบาทเว็บเซิร์ฟเวอร์และ reverse proxy อ่านให้เข้าใจว่ามันทำอะไรได้บ้าง ต่างจาก Apache ยังไง และใช้บน VPS จริงยังไง
อ่านต่อ