คำว่า 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
บทความที่เกี่ยวข้อง
อ่านต่อในหัวข้อใกล้เคียง
Error 522 Connection Timed Out — และพี่น้องอีกสามตัว
522 เป็น error ของ Cloudflare ไม่ใช่ของเว็บเซิร์ฟเวอร์คุณ และมันบอกเจาะจงกว่าที่คิด คือ Cloudflare หาเซิร์ฟเวอร์เจอแล้วแต่จับมือไม่สำเร็จ ซึ่งชี้ไปที่สาเหตุกลุ่มแคบ ๆ กลุ่มเดียว
อ่านต่อ504 Gateway Timeout คืออะไร? เมื่อการรอนานเกินกลายเป็น error
504 บอกว่ามีงานบางอย่างช้าเกินกว่าที่ระบบจะรอไหว บทความนี้อธิบายว่างานแบบไหนที่มักเป็นต้นเหตุ และทำไมการเพิ่มค่า timeout ถึงเป็นทางแก้ที่ผิดในเกือบทุกกรณี
อ่านต่อ503 Service Unavailable คืออะไร? เมื่อเซิร์ฟเวอร์ยังอยู่แต่รับงานไม่ไหว
503 เป็น error ตัวเดียวในกลุ่ม 5xx ที่บางครั้งเป็นสิ่งที่เราตั้งใจให้เกิด บทความนี้อธิบายว่าเมื่อไหร่มันคือปัญหา เมื่อไหร่มันคือการทำงานที่ถูกต้อง และควรตั้งค่าอย่างไรตอนปิดปรับปรุง
อ่านต่อ