คุณซื้อโดเมนแล้ว มี VPS แล้ว แต่เบราว์เซอร์ยังบอกว่า "เข้าถึงเว็บไซต์นี้ไม่ได้" ชิ้นที่ขาดไปเกือบทุกครั้งคือเรคคอร์ด DNS สองตัว และเว็บเซิร์ฟเวอร์ที่ตอบกลับที่อยู่ที่ถูกต้องจริงๆ นี่คือเส้นทางทั้งหมด ตั้งแต่ผู้รับจดโดเมนไปจนถึงรูปแม่กุญแจ HTTPS ที่ใช้งานได้
ก่อนเริ่ม: แพ็กเกจของคุณรับทราฟฟิกเว็บได้ไหม?
ผู้เข้าชมเชื่อมต่อมาที่พอร์ต 80 และ 443 ของเซิร์ฟเวอร์ ซึ่งต้องใช้แพ็กเกจที่มี IP สาธารณะของตัวเอง แพ็กเกจ NAT ส่งต่อแค่พอร์ต SSH ส่วนตัวของคุณ จึงโฮสต์เว็บบนโดเมนไม่ได้ — บทความ IP เฉพาะหรือ NAT ของเราอธิบายความต่าง เว็บเล็กๆ รันบน Nano-IP ได้สบาย
1. หาที่อยู่ของเซิร์ฟเวอร์
ที่อยู่ IPv4 และ IPv6 อยู่ในหน้าเซิร์ฟเวอร์ในแดชบอร์ด ในตัวอย่างเราใช้ที่อยู่สำหรับเอกสาร:
- IPv4:
203.0.113.10 - IPv6:
2001:db8::10
2. สร้างเรคคอร์ด DNS
ล็อกอินเข้าที่ที่ดูแล DNS ของโดเมน (ส่วนใหญ่คือผู้รับจดโดเมน) แล้วเพิ่ม:
| ประเภท | ชื่อ | ค่า | TTL |
|---|---|---|---|
| A | @ | 203.0.113.10 | 300 |
| AAAA | @ | 2001:db8::10 | 300 |
| CNAME | www | example.com. | 300 |
@ หมายถึงโดเมนหลัก TTL สั้นอย่าง 300 วินาทีทำให้แก้ข้อผิดพลาดได้ถูกๆ เมื่อทุกอย่างใช้งานได้แล้วค่อยเพิ่มเป็น 3600
ถ้ายังไม่อยากใช้ IPv6 ให้ข้ามเรคคอร์ด AAAA ไปก่อน — ดูคำเตือนในขั้นที่ 5
3. ตรวจว่า DNS ตอบแล้ว
อย่าเชื่อข้อความ "บันทึกแล้ว" ของผู้รับจดโดเมน ถาม DNS โดยตรง:
dig +short example.com A
dig +short example.com AAAA
dig +short www.example.com
dig +short example.com A @1.1.1.1
บรรทัดสุดท้ายถาม resolver สาธารณะ ซึ่งใกล้เคียงกับสิ่งที่ผู้เข้าชมเห็นมากกว่า ถ้าได้ IP ของคุณกลับมา เรื่อง DNS ก็เรียบร้อย
4. ทำให้เซิร์ฟเวอร์ตอบ
ติดตั้ง nginx และเปิดพอร์ต:
apt update && apt install -y nginx
ufw allow 80/tcp
ufw allow 443/tcp
เปิด http://example.com — ควรเห็นหน้าต้อนรับของ nginx จากนั้นเพิ่ม HTTPS ด้วยใบรับรองฟรี:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com
Certbot แก้การตั้งค่า nginx ตั้งการเปลี่ยนเส้นทางไป HTTPS และต่ออายุใบรับรองให้อัตโนมัติ ถ้ามีแอปจริงอยู่หลัง nginx ให้ทำตามคู่มือ reverse proxy พร้อม HTTPS ของเรา
5. กับดัก IPv6
ข้อนี้คนพลาดกันเยอะ คุณเพิ่มเรคคอร์ด AAAA แต่ nginx ฟังแค่ IPv4 ผู้เข้าชมที่ใช้ IPv6 (เครือข่ายมือถือหลายเจ้า) จะลองที่อยู่ IPv6 ก่อนแล้วล้มเหลว ตรวจให้แน่ใจว่าบล็อก server มีทั้งสองบรรทัด:
listen 80;
listen [::]:80;
การตั้งค่า nginx เริ่มต้นบน Ubuntu มี [::] อยู่แล้ว แต่การตั้งค่าที่เขียนเองมักตกหล่น ทดสอบจากเครื่องที่มี IPv6:
curl -6 -I https://example.com
ปัญหาที่เจอบ่อย
- ยังเห็น IP เก่า: resolver ในเครื่องคุณแคชไว้ รอ TTL หมด หรือถาม
@1.1.1.1แบบข้างบน - Certbot ล้มเหลวเพราะ timeout: พอร์ต 80 ถูกบล็อก หรือ DNS ยังไม่ชี้มาที่นี่ ตรวจ
ufw statusและdigอีกครั้ง - ไม่มี www ใช้ได้ แต่มี www ใช้ไม่ได้: ใบรับรองหรือบล็อก server ไม่รวม
wwwรัน certbot ใหม่พร้อมทั้งสองชื่อ
เรื่อง reverse DNS
เรคคอร์ด A และ AAAA ไปจากชื่อสู่ IP ส่วน reverse DNS (PTR) ไปทางกลับกัน และตั้งในแดชบอร์ดแทนที่จะเป็นที่ผู้รับจดโดเมน คุณต้องใช้มันแค่สำหรับอีเมล หรือเมื่อมีบริการตรวจสอบมัน — คู่มือ PTR ของเราอธิบายไว้
ถ้านี่เป็นครั้งแรกที่คุณเอาเว็บขึ้นออนไลน์ หน้ากรณีใช้งานสำหรับเว็บไซต์ ช่วยเลือกขนาดได้ และเอกสารเครือข่าย บอกว่าแต่ละแพ็กเกจได้ที่อยู่อะไรบ้าง
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ