Error 522 คืออะไร?
Error 522 (Connection Timed Out) เป็น HTTP Status Code ที่เกิดจาก Cloudflare ไม่สามารถสร้างการเชื่อมต่อ TCP กับ Origin Server (เซิร์ฟเวอร์ต้นทางของคุณ) ได้ภายในเวลาที่กำหนด โดยปกติคือ 15 วินาที สำหรับ TCP handshake และ 100 วินาที สำหรับ HTTP response
พูดง่ายๆ คือ Cloudflare ทำหน้าที่เป็น "ตัวกลาง" ระหว่างผู้เยี่ยมชมเว็บไซต์กับเซิร์ฟเวอร์ของคุณ เมื่อ Cloudflare พยายามส่งคำร้องไปยังเซิร์ฟเวอร์ต้นทาง แต่ไม่ได้รับการตอบกลับ จึงแสดงหน้า Error 522 ให้ผู้เยี่ยมชมเห็น
Error 522 แตกต่างจาก Error 521 ตรงที่ 521 หมายถึงเซิร์ฟเวอร์ปฏิเสธการเชื่อมต่อ (connection refused) ส่วน 522 หมายถึงเซิร์ฟเวอร์ไม่ตอบกลับภายในเวลาที่กำหนด (connection timed out)
สาเหตุที่พบบ่อย
Error 522 ไม่ได้เกิดจากสาเหตุเดียว แต่มีหลายปัจจัยที่อาจเป็นต้นเหตุ:
เซิร์ฟเวอร์โอเวอร์โหลด
เซิร์ฟเวอร์รับคำร้องมากเกินไปจนไม่สามารถประมวลผลได้ทัน พบบ่อยใน Shared Hosting
Firewall บล็อก IP Cloudflare
Firewall ของเซิร์ฟเวอร์หรือปลั๊กอิน WordPress บล็อก IP ของ Cloudflare โดยไม่ตั้งใจ
DNS Record ไม่ถูกต้อง
A Record ชี้ไปยัง IP ที่ผิดหรือเซิร์ฟเวอร์ที่ถูกยกเลิกแล้ว
ปัญหาเครือข่าย
เส้นทาง Network ระหว่าง Cloudflare กับ Origin Server มีปัญหาหรือ Routing ผิดพลาด
Keep-Alive ถูกปิด
เว็บเซิร์ฟเวอร์ปิด TCP Keep-Alive ทำให้ Connection ถูกตัดก่อนที่ Cloudflare จะได้รับ Response
SSL/TLS ตั้งค่าผิด
โหมด SSL ใน Cloudflare ไม่ตรงกับใบรับรองที่ติดตั้งบนเซิร์ฟเวอร์
วิเคราะห์ปัญหาเบื้องต้น
ก่อนจะลงมือแก้ไข ต้องหาสาเหตุที่แท้จริงก่อน:
1 ทดสอบว่าเซิร์ฟเวอร์ออนไลน์หรือไม่
เปิด Terminal แล้ว Ping ไปยัง IP ของ Origin Server โดยตรง:
# Ping ไปยัง Origin Server ping your-server-ip # ทดสอบการเชื่อมต่อ HTTP โดยตรง curl -I http://your-server-ip # ตรวจสอบ Port 443 (HTTPS) curl -I --connect-timeout 10 https://your-domain.com --resolve your-domain.com:443:your-server-ip
2 ตรวจสอบ Cloudflare Dashboard
เข้าไปที่ Cloudflare Dashboard → Analytics & Logs → Overview เพื่อดูว่ามี 522 errors เกิดขึ้นบ่อยแค่ไหน เกิดเฉพาะบางภูมิภาคหรือเกิดทั่วโลก
3 ตรวจสอบ Server Logs
# ดู Error Log ของ Apache tail -f /var/log/apache2/error.log # ดู Error Log ของ Nginx tail -f /var/log/nginx/error.log # ตรวจสอบทรัพยากรเซิร์ฟเวอร์ top free -m df -h
วิธีแก้ไขทีละขั้นตอน
สาเหตุอันดับ 1 ที่พบบ่อยที่สุด คือ Firewall ของเซิร์ฟเวอร์บล็อก IP ของ Cloudflare เนื่องจาก Traffic ทั้งหมดจะมาจาก IP ของ Cloudflare แทนที่จะมาจาก IP ของผู้เยี่ยมชมจริง ทำให้ระบบ Rate Limiting หรือ Firewall อาจตีความว่าเป็นการโจมตี
ดาวน์โหลดรายการ IP ล่าสุดได้ที่ https://www.cloudflare.com/ips/
# เพิ่ม Cloudflare IPs เข้า CSF Allow List nano /etc/csf/csf.allow # เพิ่ม IP ranges ต่อไปนี้: 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22 # รีสตาร์ท CSF csf -r
# อนุญาต Cloudflare IPs ผ่าน UFW for ip in 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 \ 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 \ 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 \ 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 \ 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22; do ufw allow from $ip to any port 443 ufw allow from $ip to any port 80 done ufw reload
อย่าลืม Whitelist ทั้ง IPv4 และ IPv6 ranges ของ Cloudflare ไม่เช่นนั้นผู้เยี่ยมชมบางส่วนจะยังคงเจอ Error 522 อยู่
ตรวจสอบว่า A Record ชี้ไปยัง IP ที่ถูกต้องของเซิร์ฟเวอร์ ไม่ใช่ IP เก่าที่ถูกยกเลิกแล้ว:
เข้า Cloudflare Dashboard → DNS → Records แล้วตรวจสอบว่า A Record มี IP ตรงกับที่ Hosting Provider แจ้งไว้ และต้องแน่ใจว่าเปิด Proxy (ไอคอนเมฆสีส้ม ☁️) อยู่
# ตรวจสอบ DNS Resolution dig +short your-domain.com nslookup your-domain.com # ตรวจสอบว่า IP ที่ได้คือ IP ของ Cloudflare (ถูกต้อง) # ไม่ใช่ IP ของ Origin Server โดยตรง
Cloudflare ต้องการให้ Origin Server เปิด TCP Keep-Alive ไว้ หากปิดอยู่จะทำให้ Connection ถูกตัดก่อนที่ Response จะส่งกลับได้
# เปิด KeepAlive KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15
# ภายใน http block keepalive_timeout 75; keepalive_requests 100;
ไปที่ Cloudflare Dashboard → SSL/TLS → Overview แล้วตั้งค่าให้เหมาะสม:
หากเซิร์ฟเวอร์มี SSL Certificate ที่ Valid แล้ว → ใช้ Full (Strict)
หากเซิร์ฟเวอร์มี Self-Signed Certificate → ใช้ Full
หากไม่มี SSL เลย → ใช้ Flexible (แต่ไม่แนะนำ)
หลีกเลี่ยงการใช้โหมด Flexible เพราะทำให้การเชื่อมต่อระหว่าง Cloudflare กับ Origin Server ไม่ถูกเข้ารหัส ควรใช้ Full (Strict) เสมอเมื่อเป็นไปได้
หากเซิร์ฟเวอร์ใช้ทรัพยากรจนเต็ม ก็จะไม่สามารถรับ Connection ใหม่จาก Cloudflare ได้:
# ตรวจสอบ CPU และ RAM top -bn1 | head -20 free -m # ตรวจสอบพื้นที่ดิสก์ df -h # ตรวจสอบจำนวน Connection ปัจจุบัน netstat -an | grep :80 | wc -l netstat -an | grep :443 | wc -l # ตรวจ Process ที่กิน Resource มากที่สุด ps aux --sort=-%mem | head -10
หากทรัพยากรใกล้เต็ม ควรพิจารณาอัปเกรด Hosting Plan หรือเปลี่ยนจาก Shared Hosting เป็น VPS/Cloud Hosting
บางครั้งปัญหาอาจอยู่ที่ฝั่ง Hosting Provider เอง:
ติดต่อ Support ของ Hosting Provider เพื่อถามว่ามีการ Maintenance หรือมีปัญหาด้าน Network หรือไม่ และขอให้ตรวจสอบว่าเซิร์ฟเวอร์ไม่ได้บล็อก IP ranges ของ Cloudflare
หากใช้ Shared Hosting แล้วเจอปัญหานี้บ่อย อาจเป็นสัญญาณว่าเซิร์ฟเวอร์ที่แชร์อยู่มีโหลดมากเกินไป ควรพิจารณาย้ายไปใช้ VPS หรือ Managed WordPress Hosting
สำหรับผู้ใช้ Cloudflare แผน Enterprise สามารถปรับ Proxy Read Timeout ได้ แต่สำหรับแผนฟรีและ Pro ค่า Timeout จะอยู่ที่ 100 วินาที ซึ่งเพียงพอสำหรับเว็บไซต์ส่วนใหญ่
หากเว็บไซต์มี Process ที่ใช้เวลานาน (เช่น WooCommerce import ข้อมูลจำนวนมาก) ให้พิจารณาใช้ Background Processing หรือ WP-Cron แทนการรันผ่าน HTTP Request ตรง
การตั้งค่า WordPress เฉพาะทาง
🔌 ตรวจสอบ Security Plugins
ปลั๊กอินความปลอดภัยอย่าง Wordfence, Sucuri, iThemes Security อาจบล็อก IP ของ Cloudflare โดยไม่ตั้งใจ ให้เข้าไปตรวจสอบ:
ในหน้าตั้งค่าของปลั๊กอิน ไปที่ส่วน Firewall หรือ IP Blocking แล้วเพิ่ม IP ranges ของ Cloudflare เข้าไปใน Whitelist/Allowlist
Wordfence: ไปที่ Wordfence → Firewall → Blocking แล้วตรวจว่าไม่มี IP ของ Cloudflare ถูกบล็อกอยู่ และเปิด "Whitelisted IP addresses" สำหรับ Cloudflare ranges
⚡ ปิดปลั๊กอินที่กินทรัพยากร
ปลั๊กอินบางตัวอาจทำให้เซิร์ฟเวอร์ทำงานช้าจนเกิด Timeout:
ลองปิดปลั๊กอินทีละตัวเพื่อหาว่าตัวไหนเป็นสาเหตุ โดยเฉพาะปลั๊กอินที่ทำ Backup อัตโนมัติ, รัน Cron Job หนักๆ, หรือปลั๊กอิน Page Builder ที่ใช้ทรัพยากรมาก
# ดูรายชื่อปลั๊กอินทั้งหมด wp plugin list # ปิดปลั๊กอินทั้งหมดเพื่อทดสอบ wp plugin deactivate --all # เปิดทีละตัวเพื่อหาตัวที่มีปัญหา wp plugin activate plugin-name
🗄️ เพิ่มประสิทธิภาพ Database
Database ที่มีข้อมูลสะสมมาก (post revisions, transients, spam comments) ทำให้ Query ช้าและเซิร์ฟเวอร์ตอบสนองช้าลง:
# ลบ Post Revisions wp post delete $(wp post list --post_type=revision --format=ids) --force # ลบ Transients ที่หมดอายุ wp transient delete --expired # Optimize Database Tables wp db optimize
📝 ตั้งค่า wp-config.php
เพิ่มค่าเหล่านี้ใน wp-config.php เพื่อเพิ่ม Memory Limit และลดปัญหา Timeout:
// เพิ่ม Memory Limit define('WP_MEMORY_LIMIT', '256M'); define('WP_MAX_MEMORY_LIMIT', '512M'); // จำกัด Post Revisions define('WP_POST_REVISIONS', 5); // ปิด WP-Cron แล้วใช้ Server Cron แทน define('DISABLE_WP_CRON', true);
ป้องกันไม่ให้เกิดซ้ำ
ใช้ Cloudflare Features ช่วยลดโหลด
Page Rules / Cache Rules: ตั้งค่า Cache ให้ Cloudflare เก็บไฟล์ Static ไว้ที่ Edge Server เพื่อลดจำนวน Request ที่ไปถึง Origin Server
Argo Smart Routing: ช่วยหาเส้นทางที่เร็วที่สุดจาก Cloudflare ไปยังเซิร์ฟเวอร์ของคุณ ลดโอกาสเกิด Timeout
Rate Limiting: ตั้งค่า Rate Limiting เพื่อป้องกันไม่ให้ Bot หรือ Traffic ผิดปกติทำให้เซิร์ฟเวอร์โอเวอร์โหลด
Monitoring & Alerting
ตั้งค่า Health Checks ใน Cloudflare เพื่อให้ระบบแจ้งเตือนเมื่อ Origin Server ไม่ตอบสนอง และเปิดใช้ Origin Error Rate Alert เพื่อรับการแจ้งเตือนเมื่อมี 5xx Error เพิ่มขึ้นผิดปกติ
อัปเกรด Hosting ให้เหมาะสม
หากเว็บไซต์มี Traffic สูงหรือรัน WooCommerce ควรพิจารณาใช้ Managed WordPress Hosting หรือ VPS ที่มีทรัพยากรเพียงพอ เพราะ Shared Hosting มีข้อจำกัดด้านทรัพยากรที่อาจทำให้เกิด Error 522 ในช่วงที่มี Traffic สูง
Checklist สรุปท้ายบทความ
✅ สิ่งที่ต้องตรวจสอบทั้งหมด
ต้องการผู้เชี่ยวชาญช่วยแก้ไข?
หากคุณลองทำตามขั้นตอนทั้งหมดแล้วยังแก้ไขไม่ได้ ติดต่อทีมผู้เชี่ยวชาญของเราเพื่อรับบริการแก้ไข Error 522 อย่างมืออาชีพ
📞 ติดต่อรับบริการ