CH-J Server Managerquản lý máy chủ qua SSH
Menu
Tất cả hướng dẫn và bài viết →

Cách xác minh HTTP/3 và QUIC thực sự hoạt động

Vì sao tiêu đề Alt-Svc chưa phải bằng chứng, cần kiểm tra gì trong NGINX và tường lửa, và cách xác nhận một lần truyền QUIC thực sự.

Được công bố chưa có nghĩa là hoạt động

Máy chủ công bố HTTP/3 trong tiêu đề phản hồi Alt-Svc mà máy khách nhận qua HTTP/1.1 hoặc HTTP/2. Tiêu đề này chỉ là lời hứa. HTTP/3 chạy qua QUIC trên UDP, nên trang vẫn có thể tải bình thường khi UDP bị chặn hoàn toàn và trình duyệt âm thầm tiếp tục dùng HTTP/2.

curl -sI https://server.example/ | grep -i alt-svc

Xác nhận một lần truyền thực sự

Chỉ một yêu cầu hoàn tất qua QUIC mới xác nhận được HTTP/3. Dùng bản curl được biên dịch với hỗ trợ HTTP/3; nhiều gói hệ thống không có hỗ trợ này nên tùy chọn bị từ chối, điều đó không nói lên gì về máy chủ. Trong trình duyệt, mở công cụ dành cho nhà phát triển và xem cột Protocol, cột này hiển thị h3 cho yêu cầu như vậy. Trình duyệt có thể dùng HTTP/2 ở lần truy cập đầu tiên, vì thế hãy tải lại trang.

curl -V | grep -i http3
curl -sS --http3-only -o /dev/null -w '%{http_version}\n' https://server.example/

Kiểm tra cấu hình NGINX

NGINX cần một bộ lắng nghe QUIC bên cạnh bộ lắng nghe TCP, và cả phiên bản lẫn bản biên dịch đều phải hỗ trợ tính năng này. TLS 1.3 là bắt buộc vì QUIC sử dụng trực tiếp phiên bản đó. Kiểm tra cấu hình trước khi nạp lại. Giá trị ma trong Alt-Svc là thời gian tính bằng giây mà máy khách ghi nhớ lời hứa này, vì vậy hãy dùng giá trị ngắn khi thử nghiệm.

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

Mở UDP 443 trên toàn bộ đường truyền

Nguyên nhân thất bại thường gặp nhất là tường lửa cho phép TCP 443 nhưng không cho phép UDP 443. Kiểm tra máy chủ và mọi bộ lọc bên ngoài. Có thể xác nhận socket đang lắng nghe ngay trên máy chủ. Một số mạng doanh nghiệp và mạng công cộng cố ý chặn QUIC, nên kiểm tra thất bại từ một mạng không chứng minh máy chủ có lỗi: hãy thử lại từ mạng khác.

sudo ss -lunp | grep ':443'
sudo ufw allow 443/udp
sudo tcpdump -ni any udp port 443

Giao thức mới có nhanh hơn không?

HTTP/3 hữu ích nhất trên kết nối có mất gói hoặc khi chuyển mạng, vì một gói bị mất không làm các luồng khác phải chờ. Trên kết nối có dây tốt, khác biệt có thể nhỏ và máy chủ có thể dùng nhiều CPU hơn. Hãy đo trong trường hợp của chính bạn thay vì mặc định rằng sẽ có cải thiện, và duy trì HTTP/2 cho các máy khách không thể dùng UDP.

Kiểm tra HTTP/3 trong CH-J Server Manager

Server Diagnostics có sẵn máy khách HTTP đi kèm, nên phép kiểm tra không phụ thuộc vào curl của hệ thống. Công cụ chỉ báo HTTP/3 đã được xác nhận sau khi hoàn tất một lần truyền QUIC và chỉ coi Alt-Svc là thông báo hỗ trợ. Khi UDP hết thời gian chờ, công cụ báo hỗ trợ phía máy chủ vẫn chưa được xác minh, vì nguyên nhân có thể nằm ở mạng giữa bạn và máy chủ, và không tính việc chuyển sang giao thức khác là thành công.

Tài liệu chi tiết

RFC 9114: HTTP/3 →

NGINX: QUIC and HTTP/3 →

Mở khóa sinh trắc học và bảo mật →