SSL Mode ใน Cloudflare Flexible Full และ Full Strict ต่างกันยังไง

ตั้ง SSL Mode ผิดใน Cloudflare คือสาเหตุอันดับ 1 ของปัญหา Redirect Loop

SSL Mode ใน Cloudflare Flexible Full และ Full Strict ต่างกันยังไง Cloudflare

Cloudflare SSL Mode คืออะไร?

Cloudflare เป็น CDN และ DNS Service ที่จัดการการเชื่อมต่อ HTTPS ระหว่างผู้เยี่ยมชมและเซิร์ฟเวอร์ของคุณ SSL Mode ของ Cloudflare คือการตั้งค่าว่า Cloudflare ควรจะเข้ารหัสการเชื่อมต่อ HTTPS อย่างไร นี่เป็นการตั้งค่าที่แตกต่างจากการติดตั้ง SSL Certificate บนเซิร์ฟเวอร์ของคุณ (Hosting) Cloudflare มี SSL Mode 4 แบบให้เลือก และการเลือกที่ผิดจะทำให้เกิด Redirect Loop หรือปัญหาความปลอดภัยอื่น ๆ

SSL Mode 4 ประเภท: Off, Flexible, Full, Full Strict

1. Mode: Off (ปิดใช้งาน)

เมื่อเลือก "Off" Cloudflare จะไม่เข้ารหัสการเชื่อมต่อระหว่างผู้เยี่ยมชมและ Cloudflare นอกจากนี้ Cloudflare ยังไม่บังคับให้ HTTPS อีก ผู้เยี่ยมชมสามารถเข้าผ่าน HTTP ได้ตามปกติ

2. Mode: Flexible (ยืดหยุ่น)

Cloudflare เข้ารหัสการเชื่อมต่อระหว่างผู้เยี่ยมชมกับ Cloudflare เท่านั้น (HTTPS) แต่จากนั้นการเชื่อมต่อระหว่าง Cloudflare กับเซิร์ฟเวอร์ของคุณยังคงเป็น HTTP (ไม่เข้ารหัส) ถึงแม้เซิร์ฟเวอร์ของคุณไม่มี SSL Certificate ก็สามารถใช้ได้

Tip: Mode Flexible อาจทำให้ Redirect Loop หากเซิร์ฟเวอร์บังคับ Redirect HTTP ไปยัง HTTPS

3. Mode: Full (เต็ม)

Cloudflare เข้ารหัสการเชื่อมต่อทั้งสองฝั่ง: ผู้เยี่ยมชม → Cloudflare (HTTPS) และ Cloudflare → เซิร์ฟเวอร์ (HTTPS) วิธีนี้เหมาะสำหรับเซิร์ฟเวอร์ที่มี SSL Certificate แล้ว ไม่ว่าจะเป็น Self-signed หรือ Trusted

4. Mode: Full (Strict) (เต็มแบบเข้มงวด)

เหมือน Full แต่เข้มงวดกว่า Cloudflare จะตรวจสอบว่า SSL Certificate บนเซิร์ฟเวอร์เป็นแบบ Trusted (ออกจาก Certificate Authority ที่ยอมรับ) หรือ Cloudflare ให้มา ถ้า Certificate ไม่ถูกต้อง Redirect Loop อาจเกิดขึ้น

สาเหตุ Redirect Loop และการแก้ไข

Redirect Loop เป็นปัญหาทั่วไปเมื่อตั้งค่า Cloudflare SSL Mode ผิด สมมุติเซิร์ฟเวอร์ของคุณบังคับ Redirect HTTP ไปยัง HTTPS (.htaccess หรือ cPanel settings) เมื่อรวมกับ Cloudflare Mode ที่ผิด ก็จะเกิด Loop ที่ไม่สิ้นสุด:

ถ้าไม่แน่ใจว่า Loop เกิดที่ชั้นไหน ใช้ เครื่องมือตรวจ Redirect Chain ของ dnsxray.com ไล่ดู Redirect ทีละ hop ได้เลยว่าเว็บเด้งจาก http ไป https แล้ววนกลับตรงจุดไหน ช่วยแยกได้ว่าปัญหาอยู่ที่ Cloudflare SSL Mode หรือ .htaccess ฝั่งโฮสต์

วิธีแก้ไข:

ควรเลือก SSL Mode ไหน?

สำหรับ Shared Hosting ส่วนใหญ่:

ตอบคือ Full (Strict) เพราะ Shared Hosting ส่วนใหญ่มี AutoSSL ที่ให้ Trusted SSL Certificate จากนั้นตั้งค่าดังนี้:

  1. Cloudflare SSL Mode = Full (Strict)
  2. cPanel บังคับ Redirect HTTP to HTTPS อยู่แล้ว
  3. เพิ่ม HSTS Header เพิ่มเติม (optional แต่แนะนำ)

สำหรับ Hosting เก่าที่ไม่มี SSL:

ตอบคือ Flexible และ:

  1. ไม่ต้องเปิด SSL บนเซิร์ฟเวอร์
  2. ไม่ต้องติดตั้ง Certificate บนเซิร์ฟเวอร์
  3. เพิ่มกฎ Page Rule ใน Cloudflare บังคับ HTTPS ที่ URL specific

วิธีตั้งค่า SSL Mode ใน Cloudflare

ขั้นตอนทั่วไป:

  1. Login เข้า Cloudflare Dashboard
  2. เลือก Domain ที่ต้องการตั้งค่า
  3. ไปที่แท็บ SSL/TLS
  4. ดู Encryption Mode — จะแสดง 4 ตัวเลือก: Off, Flexible, Full, Full (Strict)
  5. คลิกเลือก Mode ที่ต้องการ
  6. บันทึกเปลี่ยนแปลง

ตรวจสอบว่า SSL Mode ทำงานถูกต้อง

หลังจากเปลี่ยน SSL Mode ให้ทดสอบด้วยวิธีต่อไปนี้:

# 1. ตรวจสอบการเชื่อมต่อ HTTPS
curl -v https://yourdomain.com 2>&1 | grep -i "ssl\|tls\|certificate"

# 2. ตรวจสอบ HTTP Redirect
curl -I http://yourdomain.com

# 3. ดู Header ที่ Cloudflare ส่งมา
curl -I https://yourdomain.com | grep -i "server\|cf-"

# 4. ทดสอบจากเบราว์เซอร์ (F12 > Network > ดู Protocol)
# ต้องเห็น h2 หรือ http/2 ถ้า HTTPS ทำงาน

# 5. ตรวจสอบ SSL Certificate Chain ของเซิร์ฟเวอร์
echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -issuer
Tip: ถ้าใช้ Page Rule บังคับ HTTPS ให้ทดสอบทั้ง URL ที่ตรงกับ Rule และ URL ที่ไม่ตรง เพื่อตรวจสอบว่า Page Rule ทำงานถูกต้อง

แก้ปัญหาที่พบบ่อย

Error: "Redirect Loop — Too many redirects"

สาเหตุ: SSL Mode ของ Cloudflare ไม่ตรงกับการตั้งค่า Redirect บนเซิร์ฟเวอร์

Error: "SSL_ERROR_UNRECOGNIZED_NAME" หรือ "Certificate doesn't match domain"

สาเหตุ: ใช้ Mode "Full (Strict)" แต่ Certificate บนเซิร์ฟเวอร์ไม่ Trusted หรือไม่ตรงกับ Domain

Error: "ดำเนินการขณะเปลี่ยน SSL Mode"

Cloudflare SSL Mode ใช้เวลาแพร่ไป 5-30 นาที ก่อน Mode ใหม่ลงไปทั่ว Server ของ Cloudflare

Error: "ใช้ Page Rule แล้วยังเกิด Redirect Loop"

Page Rule บำงครั้ง Conflict กับ SSL Mode ตั้งค่า

Error: "Website slow ด้วย Full (Strict)"

เพราะ Cloudflare ต้องตรวจสอบ Certificate เพิ่มเติม ทำให้ Latency เพิ่มขึ้นเล็กน้อย


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

Q: ต้องเปลี่ยน SSL Mode ทุกครั้งที่ติดตั้ง SSL ใหม่หรือ?

A: ไม่ ไม่ต้อง เมื่อติดตั้ง SSL Certificate ใหม่บนเซิร์ฟเวอร์แล้ว Cloudflare จะใช้งาน Certificate นั้นโดยอัตโนมัติ ไม่จำเป็นต้องเปลี่ยน SSL Mode

Q: ถ้าวิ่ง Cloudflare คนเดียว เซิร์ฟเวอร์ต้องมี SSL หรือไม่?

A: ขึ้นอยู่กับ Mode ถ้าใช้ Flexible ไม่ต้องมี SSL บนเซิร์ฟเวอร์ ถ้าใช้ Full หรือ Full (Strict) ต้องมี

Q: Page Rule กับ SSL Mode ต่างกันอย่างไร?

A: SSL Mode เป็นการตั้งค่า Global สำหรับทุก URL ของ Domain ขณะที่ Page Rule สำหรับ URL Specific เช่นบังคับ HTTPS เฉพาะ /admin/ เท่านั้น ควรใช้ Page Rule เพื่อ Fine-tune