DNS และ Cloudflare
NexCMP ต้องการชื่อ DNS หนึ่งชื่อ คือ โดเมนหลัก ของตน และทำงานในสองโหมด
โหมด A: DNS ชี้ตรงไปยังเซิร์ฟเวอร์
- สร้างเรคอร์ด A
cloud.example.com → <server public IPv4>(และเรคอร์ด AAAA หากเซิร์ฟเวอร์มี IPv6) - ทางเลือก หากคุณใช้งาน:
admin.cloud.example.comและpartner.cloud.example.comชี้ไปยัง IP เดียวกัน - รัน (หรือรันซ้ำ) ตัวติดตั้ง โดยระบบจะตรวจสอบว่าชื่อนั้นชี้ไปยัง IP สาธารณะของเซิร์ฟเวอร์เอง และขอใบรับรอง Let's Encrypt ผ่าน HTTP-01 ชาเลนจ์บนพอร์ต 80
โหมด B: โดเมนถูกพร็อกซีโดย Cloudflare
สร้างเรกคอร์ดเดียวกันโดยใช้คลาวด์สีส้ม (Proxied) โปรแกรมติดตั้งจะตรวจพบว่าชื่อชี้ไปยังแอดเดرسของ Cloudflare เท่านั้น และจะสลับไปยังโหมด Cloudflare:
- nginx ยังคงรันและฟังพอร์ต 80/443 บนเซิร์ฟเวอร์ของคุณ;
- IP จริงของผู้เยี่ยมชมจะถูกอ่านจากเฮดเดอร์
CF-Connecting-IP— เฉพาะ สำหรับการเชื่อมต่อที่มาจากช่วงไอพีที่ Cloudflare ประกาศใช้งานเท่านั้น ดังนั้นจึงไม่สามารถปลอมแปลงโดยบุคคลอื่นได้; - ใบรับรองจะออกผ่าน Let's Encrypt (Cloudflare จะส่งต่อคำขอท้าทายไปยังต้นทางของคุณ); หากยังไม่สามารถทำได้ในตอนนี้ ระบบจะสร้าง self-signed origin certificate ขึ้นมาเพื่อให้โหมด "Full" ทำงานได้ และการรันโปรแกรมติดตั้งใหม่อีกครั้งในภายหลังจะอัปเกรดเป็น Let's Encrypt
คุณสามารถบังคับใช้โหมดนี้ได้ด้วย --behind-cloudflare
::: important ตั้งค่าโหมด SSL/TLS ใน Cloudflare ใน Cloudflare ให้ไปที่ SSL/TLS › Overview และเลือก Full (strict) ทันทีที่โปรแกรมติดตั้งรายงานว่ามีใบรับรอง Let's Encrypt แล้ว สำหรับ self-signed origin certificate ให้ใช้ Full ส่วน Flexible จะทำให้เกิดลูปการเปลี่ยนเส้นทาง :::
TIP
หากเปิดใช้งาน "Always Use HTTPS" อยู่ Cloudflare จะส่งคำขอตรวจสอบความถูกต้องไปยังพอร์ต 443 ของต้นทางคุณ โปรแกรมติดตั้งจะจัดการเรื่องนี้โดยการสร้างใบรับรองแบบลงนามด้วยตนเองชั่วคราวก่อน จากนั้นจึงลองใหม่อีกครั้งกับ Let's Encrypt
ตรวจสอบการทำงาน
bash
dig +short cloud.example.com # A record (a Cloudflare address in mode B)
curl -I https://cloud.example.com/healthz
sudo certbot certificates # certificate name, domains and expiryใบรับรองจะต่ออายุโดยอัตโนมัติด้วยตัวจับเวลาของ certbot การต่ออายุจะใช้เว็บรูท /var/www/nexcmp-acme ดังนั้นพอร์ต 80 จึงต้องสามารถเข้าถึงได้ (โดยตรงหรือผ่าน Cloudflare)
ปัญหาที่พบบ่อย
| อาการ | สาเหตุ | วิธีแก้ปัญหา |
|---|---|---|
| โปรแกรมติดตั้งแจ้งว่า "DNS … does not point to … (nor to Cloudflare) — skipping nginx/TLS" | เรกคอร์ด DNS หายไป ไม่ถูกต้อง หรือยังไม่แพร่กระจาย | แก้ไขเรกคอร์ด รอให้ระบบแพร่กระจาย แล้วรันโปรแกรมติดตั้งใหม่อีกครั้ง |
เบราว์เซอร์แสดง ERR_TOO_MANY_REDIRECTS เมื่ออยู่เบื้องหลัง Cloudflare | โหมด SSL คือ Flexible | ตั้งค่าเป็น Full (strict) (หรือ Full) |
| ข้อผิดพลาด Cloudflare 525/526 | ใบรับรองต้นทางถูกปฏิเสธ | ใช้ Full ร่วมกับ self-signed origin certificate หรือ Full (strict) ร่วมกับ Let's Encrypt |
| ไอพีของผู้เยี่ยมชมทุกคนในบันทึก (logs) กลายเป็นไอพีของ Cloudflare | ไม่ได้อยู่ในโหมด Cloudflare | รันโปรแกรมติดตั้งใหม่อีกครั้งด้วย --behind-cloudflare |
ดูข้อมูลเพิ่มเติมได้ที่ Installation errors