การตั้งค่า HTTP/3 ( QUIC ) บน Nginx ช่วยให้เว็บไซต์โหลดเร็วขึ้นอย่างมาก โดยเฉพาะในสภาวะที่อินเทอร์เน็ตไม่เสถียร เพราะเปลี่ยนจากการใช้ TCP มาเป็น UDP ที่ลดขั้นตอนการ “Handshake” ลง
ตรวจสอบเวอร์ชัน Nginx
HTTP/3 ได้รับการสนับสนุนแบบ Mainline ตั้งแต่เวอร์ชัน 1.25.0 ขึ้นไป คุณสามารถเช็คเวอร์ชันได้ด้วยคำสั่งnginx -v
หากเวอร์ชันเก่ากว่านี้ คุณจำเป็นต้องอัปเดต Nginx หรือ Compile ใหม่พร้อมโมดูล--with-http_v3_module
การตั้งค่าใน Firewall
HTTP/3 วิ่งบนโปรโตคอล UDP พอร์ต 443 ( ต่างจาก HTTP/1.1 และ 2 ที่ใช้ TCP ) คุณต้องเปิดพอร์ตที่ Firewall ก่อน
- ufw ( Ubuntu ):
sudo ufw allow 443/udp - Cloud (AWS/GCP):
ต้องไปเปิด Security Group ให้รับ UDP 443 ด้วย
แก้ไขไฟล์ Configuration
เปิดไฟล์ Config ของ Site คุณ ( เช่น /etc/nginx/sites-available/default ) และเพิ่มคำสั่งที่จำเป็นลงใน server block
server {
# 1. ฟังการเชื่อมต่อ HTTP/3 บน UDP
listen 443 quic reuseport;
# 2. ฟังการเชื่อมต่อ HTTP/2 และ 1.1 บน TCP ตามปกติ
listen 443 ssl;
http2 on;
server_name example.com;
# SSL Settings (ต้องใช้ TLS v1.3 เท่านั้นสำหรับ QUIC)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/cert.key;
# 3. ส่ง Header บอก Browser ว่า Server นี้รองรับ HTTP/3
# 'ma=86400' คือการบอกให้จำไว้ 24 ชั่วโมง
add_header Alt-Svc 'h3=":443"; ma=86400';
# 4. (Optional) เพิ่มความปลอดภัยและความเร็ว
add_header QUIC-Status $http3;
location / {
root /var/www/html;
index index.html;
}
}
ตรวจสอบและ Restart
หลังจากแก้ไขเสร็จแล้ว ให้ตรวจสอบความถูกต้องของ Syntax เสมอ
sudo nginx -t- ถ้าผ่าน ( syntax is ok ) ให้สั่ง
sudo systemctl restart nginx
วิธีทดสอบว่า HTTP/3 ทำงานจริงไหม ?
นื่องจาก Browser จะไม่เปลี่ยนเป็น HTTP/3 ในทันที ( มักจะโหลดด้วย HTTP/2 ก่อนในครั้งแรกจนกว่าจะเห็น Header Alt-Svc ) คุณสามารถเช็คได้ผ่านเครื่องมือออนไลน์
- HTTP/3 Check: ไปที่เว็บไซต์ http3check.net แล้วใส่ URL ของคุณ
- Chrome DevTools: กด F12 > Tab Network > คลิกขวาที่หัวตารางเลือก “Protocol” ถ้าสำเร็จจะขึ้นว่า h3
ข้อควรระวัง
OpenSSL: การจะใช้ QUIC ได้อย่างสมบูรณ์ Nginx ต้องถูก Build ร่วมกับ Library ที่รองรับ เช่น BoringSSL, LibreSSL หรือ OpenSSL 3.2+
อ่านเพิ่มเติม