Server

Error 522 Connection Timed Out — และพี่น้องอีกสามตัว

อัปเดต 2026-09-09อ่าน ~9 นาที

Error 522 Connection Timed Out ไม่ได้มาจากเว็บเซิร์ฟเวอร์ของคุณ แต่มาจาก Cloudflare ที่อยู่ข้างหน้า มันแปลว่า Cloudflare พยายามเปิดการเชื่อมต่อไปยังเซิร์ฟเวอร์ต้นทางของคุณแล้ว แต่การจับมือ (TCP handshake) ไม่สำเร็จภายในเวลาที่กำหนด

ข่าวดีคือมันบอกเจาะจงกว่าที่หลายคนคิด เพราะ Cloudflare มี error สี่ตัวสำหรับปัญหาฝั่งต้นทาง และแต่ละตัวชี้ไปคนละจุดของเส้นทาง การรู้ว่าทำไมถึงได้ 522 ไม่ใช่ 521 หรือ 524 ตัดสาเหตุออกไปได้ครึ่งหนึ่งตั้งแต่ยังไม่เริ่มแก้

บทความนี้แยกสี่ตัวนั้นให้ชัด แล้วไล่สาเหตุของ 522 เรียงตามความถี่จริง — โดยสาเหตุอันดับหนึ่งเป็นเรื่องที่แก้ได้ในห้านาทีถ้ารู้ว่าต้องดูตรงไหน

521, 522, 523, 524 — สี่ตัวนี้คนละเรื่องกัน

ตารางนี้คือส่วนที่มีประโยชน์ที่สุดของบทความ เพราะเลขบอกอยู่แล้วว่าพังตรงไหนของเส้นทาง

โค้ดเกิดอะไรขึ้นชี้ไปที่
521 Web Server Is Downต้นทางปฏิเสธการเชื่อมต่อ (ส่ง RST กลับ)เว็บเซิร์ฟเวอร์ไม่ได้รัน หรือไฟร์วอลล์ REJECT
522 Connection Timed Outจับมือไม่สำเร็จ ไม่มีคำตอบภายในเวลาไฟร์วอลล์ DROP แพ็กเกจ หรือเซิร์ฟเวอร์รับงานไม่ทัน
523 Origin Is UnreachableCloudflare หาเส้นทางไปต้นทางไม่เจอเลยDNS ชี้ IP ผิด หรือ IP นั้นไม่มีอยู่จริง
524 A Timeout Occurredต่อติดแล้ว แต่แอปตอบไม่ทันใน 100 วินาทีสคริปต์ช้า คิวรีหนัก งานยาวเกิน
💡 สังเกตความต่างระหว่าง 521 กับ 522 ให้ดี — 521 คือมีคนรับสายแล้วปฏิเสธ ส่วน 522 คือโทรไปแล้วเงียบจนหมดเวลา ในทางไฟร์วอลล์คือความต่างระหว่าง REJECT กับ DROP ซึ่งเป็นเบาะแสสำคัญมาก

สาเหตุอันดับหนึ่ง: ไฟร์วอลล์บล็อก IP ของ Cloudflare

นี่คือสาเหตุที่พบมากที่สุดของ 522 และเป็นสาเหตุที่แก้ง่ายที่สุดด้วย

เมื่อเว็บอยู่หลัง Cloudflare ทุก request ที่มาถึงเซิร์ฟเวอร์ของคุณจะมาจาก IP ของ Cloudflare ไม่ใช่ IP ของผู้เข้าชม ถ้าไฟร์วอลล์หรือระบบกันบุกรุกตัดสินใจบล็อก IP เหล่านั้น — ซึ่งเกิดขึ้นได้ง่ายมากเพราะทราฟฟิกทั้งเว็บมาจาก IP ไม่กี่ชุด จึงดูเหมือนการโจมตี — เว็บจะขึ้น 522 ทันที

ตัวการที่พบบ่อยคือ fail2ban, CSF, mod_evasive หรือระบบกันบุกรุกของ DirectAdmin ที่เห็นคำขอจำนวนมากจาก IP เดียวแล้วแบนอัตโนมัติ ผลคือเว็บล่มเป็นช่วง ๆ แล้วกลับมาเองเมื่อแบนหมดอายุ ซึ่งเป็นอาการที่หาสาเหตุยากมากถ้าไม่รู้ว่าต้องดูตรงนี้

วิธีแก้: ใส่ IP range ทั้งหมดของ Cloudflare ลงใน allowlist ของไฟร์วอลล์และของทุกระบบกันบุกรุกที่ใช้ Cloudflare เผยแพร่รายการ IP ไว้เป็นสาธารณะและมีการอัปเดตเป็นครั้งคราว ควรตั้งให้ดึงมาอัปเดตอัตโนมัติแทนที่จะก๊อปครั้งเดียวจบ

💡 วิธีเช็กเร็ว ๆ: ดู log ของ fail2ban หรือ CSF ว่ามี IP ของ Cloudflare อยู่ในรายการที่ถูกแบนไหม ถ้ามีก็จบ — นั่นคือคำตอบ

สาเหตุรองลงมา

  • เซิร์ฟเวอร์รับการเชื่อมต่อใหม่ไม่ทัน เมื่อโหลดสูงจนคิวการเชื่อมต่อเต็ม แพ็กเกจใหม่จะถูกทิ้งเงียบ ๆ ซึ่งให้ผลเป็น 522 พอดี ดูจากค่า load average และจำนวน worker ที่ตั้งไว้
  • RAM หมดจนกระบวนการถูก OOM killer เก็บ อาการคล้ายกันคือเว็บล่มเป็นช่วง ๆ ให้ตรวจด้วยคำสั่ง dmesg แล้วมองหาบรรทัดที่เกี่ยวกับ oom
  • DNS ใน Cloudflare ชี้ไป IP เก่า มักเกิดหลังย้ายเซิร์ฟเวอร์แล้วลืมแก้ระเบียน A ถ้า IP นั้นยังมีเครื่องอื่นอยู่จะได้ 522 แต่ถ้าไม่มีอะไรเลยมักได้ 523 แทน
  • เว็บเซิร์ฟเวอร์ฟังผิดพอร์ตหรือ bind ผิดที่อยู่ ถ้าบริการ bind อยู่ที่ 127.0.0.1 แทน 0.0.0.0 มันจะรับเฉพาะการเชื่อมต่อจากในเครื่อง และปฏิเสธทุกอย่างจากข้างนอกรวมถึง Cloudflare
  • ผู้ให้บริการเน็ตหรือ upstream ของเซิร์ฟเวอร์มีปัญหาชั่วคราว กรณีนี้แก้อะไรไม่ได้นอกจากรอ แต่ยืนยันได้ด้วยการต่อตรงเข้า IP จากเครื่องอื่น
  • ตั้ง Cloudflare เป็นโหมด Full (strict) แต่ใบรับรองบนเซิร์ฟเวอร์หมดอายุ กรณีนี้มักได้ 526 แต่บางการตั้งค่าจะแสดงเป็นอาการต่อไม่ติดแทน

ไล่ตรวจตามลำดับนี้

  • เช็ก allowlist ของ Cloudflare ก่อนเลย ทั้งไฟร์วอลล์และ fail2ban/CSF เพราะเป็นสาเหตุอันดับหนึ่งและใช้เวลาตรวจแค่นาทีเดียว
  • ต่อตรงเข้าเซิร์ฟเวอร์โดยข้าม Cloudflare ใช้ curl ยิงไปที่ IP จริงพร้อมระบุ Host header ถ้าต่อได้แปลว่าเซิร์ฟเวอร์ปกติและปัญหาอยู่ระหว่างทาง
  • ดูว่ามีอะไรฟังอยู่จริง สั่ง ss -tlnp แล้วยืนยันว่าเว็บเซิร์ฟเวอร์ bind อยู่ที่ 0.0.0.0 พอร์ต 80 และ 443 ไม่ใช่ 127.0.0.1
  • เช็กโหลดและแรม ใช้ uptime กับ free -h ถ้าโหลดสูงผิดปกติหรือแรมเหลือน้อย ปัญหาคือกำลังไม่พอ ไม่ใช่การตั้งค่า
  • อ่าน log ของเว็บเซิร์ฟเวอร์ในช่วงที่เกิด ถ้า log ว่างเปล่าตอนเกิด 522 แปลว่า request ไปไม่ถึงเซิร์ฟเวอร์เลย ซึ่งยืนยันว่าถูกบล็อกระหว่างทาง
  • ยืนยันระเบียน A ใน Cloudflare ว่าชี้ไป IP ปัจจุบันจริง โดยเฉพาะถ้าเพิ่งย้ายเครื่อง
💡 ข้อที่ห้าเป็นตัวแยกที่ดีมาก: log เว็บเซิร์ฟเวอร์ว่างเปล่า = request ไม่เคยมาถึง (ไฟร์วอลล์/เน็ตเวิร์ก) ส่วน log มีบันทึกแต่ตอบช้า = ปัญหาอยู่ที่แอป ซึ่งจะเป็น 524 มากกว่า 522

ป้องกันไม่ให้เกิดอีก

  • ตั้งให้ allowlist ของ Cloudflare อัปเดตอัตโนมัติ รายการ IP มีการเปลี่ยนเป็นครั้งคราว การก๊อปครั้งเดียวจบจะกลับมาพังในอีกหลายเดือน
  • ตั้งค่าให้เว็บเซิร์ฟเวอร์อ่าน IP จริงของผู้เข้าชม ใช้ ngx_http_realip_module หรือ mod_remoteip เพื่อให้ระบบกันบุกรุกเห็น IP ของผู้ใช้จริงแทนที่จะเห็นแต่ IP ของ Cloudflare — แก้ที่ต้นเหตุของการแบนผิดตัว
  • ติดตั้งระบบเฝ้าดู uptime ที่แจ้งเตือน เพราะ 522 มักเกิดเป็นช่วง ๆ และหายเองก่อนที่คุณจะทันเห็น
  • เฝ้าดูแรมและโหลด ตั้งการแจ้งเตือนก่อนถึงขีดจำกัด ดีกว่ามารู้ตอนเว็บล่มแล้ว
  • สั่ง systemctl enable บริการทุกตัว เพื่อให้กลับมาเองหลังรีบูต
  • เก็บ IP จริงของเซิร์ฟเวอร์ไว้ใช้ทดสอบ เวลาเกิดปัญหาจะได้ยิงตรงข้าม Cloudflare ได้ทันทีโดยไม่ต้องไปหา

อยากคุมไฟร์วอลล์และดู log เองได้ทั้งหมด?

Cloud VPS NVMe สิทธิ์ root เต็ม — ตั้ง allowlist ของ Cloudflare เอง อ่าน log จริง มี VNC ไว้กู้ตอนล็อกตัวเอง เริ่ม ฿150/เดือน

คำถามที่พบบ่อย

Error 522 เป็นปัญหาของ Cloudflare หรือของเซิร์ฟเวอร์เรา

เกือบทุกครั้งเป็นฝั่งเซิร์ฟเวอร์เรา Cloudflare แค่รายงานว่ามันต่อเข้าไปไม่สำเร็จ สาเหตุที่พบบ่อยที่สุดคือไฟร์วอลล์หรือระบบกันบุกรุกบนเซิร์ฟเวอร์บล็อก IP ของ Cloudflare อยู่ ให้เช็ก allowlist ก่อนเป็นอันดับแรก

521 กับ 522 ต่างกันยังไง

521 คือเซิร์ฟเวอร์ปฏิเสธการเชื่อมต่อกลับมาชัด ๆ มักเพราะเว็บเซิร์ฟเวอร์ไม่ได้รันหรือไฟร์วอลล์ตั้ง REJECT ส่วน 522 คือไม่มีคำตอบเลยจนหมดเวลา มักเพราะไฟร์วอลล์ตั้ง DROP หรือเซิร์ฟเวอร์รับงานใหม่ไม่ทัน

เว็บขึ้น 522 เป็นช่วง ๆ แล้วหายเอง เพราะอะไร

อาการนี้ชี้ไปสองอย่างเป็นหลัก หนึ่งคือระบบกันบุกรุกอย่าง fail2ban แบน IP ของ Cloudflare ชั่วคราวแล้วปล่อยเมื่อครบเวลา สองคือเซิร์ฟเวอร์โหลดพีคเป็นช่วงจนรับการเชื่อมต่อใหม่ไม่ทัน ให้ดู log ของ fail2ban และกราฟโหลดในช่วงเวลาที่เกิด

ปิด Cloudflare แล้ว 522 หายไหม

หาย เพราะ 522 เป็น error ที่ Cloudflare สร้างขึ้น แต่นั่นไม่ได้แปลว่าปัญหาหาย — ถ้าสาเหตุจริงคือเซิร์ฟเวอร์รับโหลดไม่ไหว การปิด proxy จะทำให้ผู้เข้าชมเจออาการช้าหรือต่อไม่ติดโดยตรงแทน ควรใช้การปิดชั่วคราวเพื่อวินิจฉัยเท่านั้น

GUIDES

บทความที่เกี่ยวข้อง

อ่านต่อในหัวข้อใกล้เคียง

ดูบทความทั้งหมด
502 Bad Gateway คืออะไร? เข้าใจว่าใครคุยกับใครไม่รู้เรื่อง
Server

502 Bad Gateway คืออะไร? เข้าใจว่าใครคุยกับใครไม่รู้เรื่อง

502 ไม่ได้แปลว่าเว็บพัง แต่แปลว่าเซิร์ฟเวอร์สองตัวคุยกันไม่รู้เรื่อง บทความนี้อธิบายว่าใครคือ gateway ใครคือปลายทาง สาเหตุที่พบบ่อย และลำดับการไล่ตรวจที่ใช้ได้จริง

อ่านต่อ
ERR_CONNECTION_REFUSED คืออะไร? อ่านให้ออกว่ามันบอกอะไรเรา
Server

ERR_CONNECTION_REFUSED คืออะไร? อ่านให้ออกว่ามันบอกอะไรเรา

error ตัวนี้มีประโยชน์กว่าที่เห็น เพราะคำว่า "ปฏิเสธ" หมายถึงมีคนรับสายแล้วตอบว่าไม่ ซึ่งตัดสาเหตุทั้งกลุ่มออกได้ทันที ต่างจาก timed out ที่เงียบหายและเดาไม่ถูกว่าพังตรงไหน

อ่านต่อ
504 Gateway Timeout คืออะไร? เมื่อการรอนานเกินกลายเป็น error
Server

504 Gateway Timeout คืออะไร? เมื่อการรอนานเกินกลายเป็น error

504 บอกว่ามีงานบางอย่างช้าเกินกว่าที่ระบบจะรอไหว บทความนี้อธิบายว่างานแบบไหนที่มักเป็นต้นเหตุ และทำไมการเพิ่มค่า timeout ถึงเป็นทางแก้ที่ผิดในเกือบทุกกรณี

อ่านต่อ