الإعلان عن الدعم لا يعني أنه يعمل
يعلن الخادم عن 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، يوضح أن دعم الخادم لا يزال غير متحقّق منه، لأن السبب قد يكون الشبكة بينك وبين الخادم، ولا يحتسب الرجوع إلى بروتوكول آخر نجاحاً.