ประกาศว่ารองรับไม่ได้แปลว่าใช้งานได้
เซิร์ฟเวอร์ประกาศ HTTP/3 ในส่วนหัวการตอบกลับ Alt-Svc ซึ่งไคลเอนต์ได้รับผ่าน HTTP/1.1 หรือ HTTP/2 ส่วนหัวนี้เป็นเพียงคำบอกว่าจะรองรับ HTTP/3 ทำงานผ่าน QUIC บน UDP ดังนั้นหน้าเว็บอาจโหลดได้ตามปกติแม้ UDP ถูกปิดกั้นทั้งหมด โดยไม่มีการแจ้งเตือนว่าเบราว์เซอร์ยังคงใช้ HTTP/2.
curl -sI https://server.example/ | grep -i alt-svcยืนยันการรับส่งจริง
มีเพียงคำขอที่ดำเนินการเสร็จสมบูรณ์ผ่าน QUIC เท่านั้นที่ยืนยันการทำงานของ HTTP/3. ใช้ curl ที่คอมไพล์พร้อมการรองรับ HTTP/3 เนื่องจากแพ็กเกจของระบบจำนวนมากไม่ได้รองรับ ตัวเลือกจึงถูกปฏิเสธ ซึ่งไม่ได้บอกอะไรเกี่ยวกับเซิร์ฟเวอร์ ในเบราว์เซอร์ ให้เปิดเครื่องมือสำหรับนักพัฒนาแล้วดูคอลัมน์ Protocol ซึ่งจะแสดง h3 สำหรับคำขอดังกล่าว เบราว์เซอร์อาจใช้ HTTP/2 ในการเข้าชมครั้งแรก จึงควรโหลดหน้าเว็บอีกครั้ง
curl -V | grep -i http3
curl -sS --http3-only -o /dev/null -w '%{http_version}\n' https://server.example/ตรวจการกำหนดค่า NGINX
NGINX ต้องมีตัวรับฟัง QUIC ควบคู่กับตัวรับฟัง TCP และทั้งเวอร์ชันและบิลด์ต้องรองรับด้วย จำเป็นต้องใช้ TLS 1.3 เพราะ QUIC ใช้โดยตรง ตรวจการกำหนดค่าก่อนโหลดใหม่ ค่า ma ใน Alt-Svc คือระยะเวลาเป็นวินาทีที่ไคลเอนต์จดจำคำประกาศนี้ จึงควรใช้ค่าระยะเวลาสั้นระหว่างทดสอบ
listen 443 ssl;
listen 443 quic reuseport;
http2 on;
add_header Alt-Svc 'h3=":443"; ma=300' always;
nginx -V 2>&1 | grep -o with-http_v3_module
sudo nginx -tเปิด UDP 443 ตลอดเส้นทาง
สาเหตุที่พบบ่อยที่สุดของความล้มเหลวคือไฟร์วอลล์อนุญาต TCP 443 แต่ไม่อนุญาต UDP 443 ตรวจทั้งเซิร์ฟเวอร์และตัวกรองภายนอกทุกตัว คุณสามารถยืนยันได้บนเซิร์ฟเวอร์ว่าซ็อกเก็ตกำลังรับฟังอยู่ เครือข่ายองค์กรและเครือข่ายสาธารณะบางแห่งจงใจปิดกั้น QUIC ดังนั้นการทดสอบล้มเหลวจากเครือข่ายหนึ่งไม่ได้พิสูจน์ว่าเซิร์ฟเวอร์มีปัญหา ให้ทดสอบซ้ำจากเครือข่ายอื่น
sudo ss -lunp | grep ':443'
sudo ufw allow 443/udp
sudo tcpdump -ni any udp port 443โปรโตคอลใหม่เร็วขึ้นหรือไม่
HTTP/3 ช่วยได้มากที่สุดกับการเชื่อมต่อที่มีแพ็กเก็ตสูญหายหรือมีการเปลี่ยนเครือข่าย เพราะแพ็กเก็ตที่สูญหายจะไม่ทำให้สตรีมอื่นหยุดรอ บนการเชื่อมต่อแบบสายที่ดี ความแตกต่างอาจน้อยและเซิร์ฟเวอร์อาจใช้ CPU สูงขึ้น ให้วัดผลในสภาพการใช้งานของคุณเองแทนการคาดว่าจะดีขึ้น และคง HTTP/2 ไว้สำหรับไคลเอนต์ที่ใช้ UDP ไม่ได้
การทดสอบ HTTP/3 ใน CH-J Server Manager
Server Diagnostics มีไคลเอนต์ HTTP รวมมาด้วย การทดสอบจึงไม่ขึ้นกับ curl ของระบบ โดยจะรายงานว่ายืนยัน HTTP/3 แล้วก็ต่อเมื่อการรับส่ง QUIC เสร็จสมบูรณ์ และถือว่า Alt-Svc เป็นเพียงการประกาศเท่านั้น เมื่อ UDP หมดเวลารอ เครื่องมือจะระบุว่ายังไม่ได้ยืนยันการรองรับของเซิร์ฟเวอร์ เพราะสาเหตุอาจอยู่ที่เครือข่ายระหว่างคุณกับเซิร์ฟเวอร์ และจะไม่นับการเปลี่ยนไปใช้โปรโตคอลอื่นเป็นความสำเร็จ