ป้ายกำกับ: TCP

Nginx: HTTP/3 ( QUIC )Nginx: HTTP/3 ( QUIC )

การตั้งค่า 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 เสมอ

  1. sudo nginx -t
  2. ถ้าผ่าน ( 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+


อ่านเพิ่มเติม